Сертифікати: теоретична частина
Потреба в сертифікатах в мережах і розподілених застосунках
Сучасні мережі та розподілені застосунки працюють у середовищі, де учасники зазвичай не мають попередньої домовленості. Наприклад, браузер підключається до сервера в Інтернеті, мобільний застосунок звертається до хмарного API, мікросервіси взаємодіють між собою у складних інфраструктурах. У таких умовах виникає базова потреба встановити довіру: зрозуміти, з ким ми спілкуємося, і чи можна цьому учаснику довіряти.
Для захисту даних та підтвердження особи сторони мережевого з’єднання використовують криптографію з відкритим ключем. Кожен учасник має пару ключів: закритий ключ, який нікому не передається, та відкритий ключ, який можна розповсюджувати. Відкритий ключ дозволяє шифрувати дані для власника закритого ключа або перевіряти створений ним цифровий підпис. Цей підхід робить можливим безпечний обмін між сторонами, які не обмінювалися секретами наперед. Але при практичному використанні виникає нова група задач.
1) якщо певний вузол повідомляє свій відкритий ключ, то немає гарантії, що це справді ключ потрібного учасника. 2) немає гарантії, що відкритий ключ не підмінили дорогою зловмисники. 3) у великих мережах неможливо вручну перевіряти та розповсюджувати ключі для кожного нового учасника.
Без вирішення цих задач криптографія з відкритим ключем не дає змоги побудувати масштабовану і надійну модель довіри.
Сертифікати та інфраструктура відкритих ключів (PKI) вирішують саме ці завдання. Сертифікат поєднує відкритий ключ з інформацією про субʼєкт і підтверджує цей звʼязок цифровим підписом довіреного центру сертифікації. Завдяки цьому інші учасники можуть автоматично перевірити справжність ключа, автентифікувати сторону з’єднання та будувати ланцюжок довіри без ручного обміну ключами. Інфраструктура відкритих ключів (PKI) забезпечує узгоджений механізм створення, розповсюдження, підтвердження та відкликання сертифікатів, а також побудову довіри між учасниками, які не мають попередніх прямих відносин.
Нижче розглянемо це більш детально.
Структурні формати сертифікатів
Сертифікат — це документ, який зв’язує відкритий ключ з певним субʼєктом (сервером, користувачем, пристроєм) і містить інформацію, необхідну для перевірки цього зв’язку. Щоб різні системи могли однаково інтерпретувати та перевіряти сертифікат, потрібно чітко означити його структуру. Це робиться за допомогою структурного формату.
Структурний формат сертифіката означує набір полів, їхнє значення, порядок, спосіб представлення та правила перевірки. Іншими словами, формат описує, що саме має бути всередині сертифіката та як ця інформація повинна бути організована, щоб її могли зрозуміти всі сумісні системи. До таких елементів зазвичай належать ім’я або ідентифікатор субʼєкта, відкритий ключ, термін дії, інформація про центр сертифікації, цифровий підпис і за потреби додаткові розширення.
У сучасних мережевих технологіях переважає один структурний формат сертифікатів — X.509. Він означує структуру даних за допомогою опису ASN.1, встановлює обов’язкові та необов’язкові поля, а також правила, за якими клієнт повинен перевіряти ланцюжок довіри. Формат X.509 став основою для сертифікатів у TLS/HTTPS, VPN, електронній пошті, промислових протоколах, хмарних сервісах та більшості систем аутентифікації.
Важливо відрізняти структурний формат від формату кодування. Структурний формат описує зміст і внутрішню логіку сертифіката, тоді як PEM, DER або PFX визначають лише спосіб, у який цей вміст записується у файл чи передається мережею. Незалежно від способу кодування, сам сертифікат зазвичай побудований саме за правилами X.509.
Сертифікати X509
X.509 — це стандарт, який визначає не просто структуру сертифіката, а повну модель оброблення сертифікатів у системах з відкритим ключем. Він встановлює правила кодування сертифікатів у формі ASN.1, описує обов’язкові поля, додаткові розширення та формальні алгоритми перевірки ланцюжків сертифікації. Особливо важливо, що X.509 визначає саме поведінку перевіряючої сторони: які поля потрібно обробляти, як інтерпретувати призначення ключа, як будувати шлях довіри та які обмеження враховувати при використанні сертифіката у конкретному протоколі.
Важливою частиною стандарту є система розширень. Вона дозволяє додавати до сертифіката інформацію про політики сертифікації, дозволені операції з ключем, альтернативні ідентифікатори суб’єкта, вимоги до обмеження шляху довіри, а також специфічні розширення, визначені галузевими профілями. Саме завдяки розширенням X.509 став універсальним механізмом — один і той самий формат може застосовуватись у вебі, мобільних застосунках, промислових протоколах, смарт-картах і вбудованих пристроях.
Ще одна важлива риса X.509 — його профілі. Базовий стандарт містить повний набір можливостей, але для конкретних протоколів визначаються профілі, які уточнюють, які розширення повинні бути присутніми, які поля обов’язкові, а які заборонені. Найпоширенішим є профіль RFC 5280, який визначає правила використання сертифікатів у протоколах Інтернету. Профілі забезпечують сумісність: клієнти можуть покладатися на те, що сертифікат для TLS або S/MIME матиме саме ту структуру, яку вони очікують.
Окреме місце в X.509 займають механізми відкликання. Стандарт визначає два основних інструменти — списки відкликаних сертифікатів та протокол OCSP. Хоча обидва механізми є формально частиною інфраструктури X.509, на практиці їх реалізація та застосування значно варіюються. Це призвело до певних обмежень реальної PKI: клієнти не завжди можуть жорстко покладатися на наявність актуальної інформації про відкликання, тому багато систем застосовують додаткові захисні механізми або спрощення.
Посилання
https://uk.wikipedia.org/wiki/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B8%D0%B9_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%82?utm_source=chatgpt.com
Автори
Теоретичне заняття адаптував Олександр Пупена.
Feedback
Якщо Ви хочете залишити коментар у Вас є наступні варіанти:
Про проект і можливість допомогти проекту написано тут