Що таке HPKP?

HPKP — це застарілий заголовок відповіді веб-безпеки, абревіатура означає PIN-код відкритого ключа HTTP. Він мав на меті запобігти скомпрометованому або шахрайському центру сертифікації від видачі загальнодоступного, але контрольованого хакерами сертифіката HTTPS для веб-сайту. У цьому випадку хакери зможуть розшифрувати будь-який перехоплений HTTPS-трафік на уражений веб-сайт.

Порада: заголовки веб-відповідей — це фрагменти метаданих, які сервер включає під час відповіді на запити. Невелика підмножина з них називається заголовками безпеки, оскільки вони вмикають і налаштовують різні функції безпеки.

Інфраструктура сертифікатів HTTPS

Інфраструктура сертифікатів, на якій побудовано HTTPS, заснована на мережі довіри. Деякі компанії діють як центри сертифікації (CA), які публікують один або кілька кореневих сертифікатів. Набір кореневих сертифікатів включено в усі пристрої в довіреному сховищі. Коли веб-сайт запитує власний сертифікат HTTPS від ЦС, сертифікат підписується кореневим сертифікатом. Коли ваш комп’ютер бачить сертифікат HTTPS, він перевіряє підпис. Якщо сертифікат підписаний кореневим сертифікатом, якому він довіряє, ваш комп’ютер також довіряє сертифікату HTTPS.

Порада: ЦС також може мати проміжні сертифікати, підписані кореневим сертифікатом. Ці проміжні сертифікати також можна використовувати для підписання сертифікатів HTTPS для веб-сайтів.

Завдання центру сертифікації — видавати сертифікат лише тоді, коли вони підтвердили, що особа, яка їх запитує, є справжнім власником веб-сайту. Ідея цієї структури полягає в тому, що якщо хакер створить власний сертифікат для веб-сайту, він не буде підписаний ЦС, якому довіряє ваш комп’ютер, і ви побачите попередження.

Що зробив HPKP?

Вся система сертифікатів покладається на надійність центрів сертифікації. Спочатку, однак, не було жодних засобів захисту від скомпрометації ЦС хакерами або шахрайства та вибору неправильної видачі сертифікатів.

HPKP був розроблений для захисту від такої можливості. Це дозволяє веб-сайтам вказувати ексклюзивний список сертифікатів, яким можна довіряти для веб-сайту в процесі, який називається закріпленням. Можна було закріпити кореневий або проміжний сертифікат, що по суті дозволило одному ЦС видавати сертифікати для веб-сайту. Також можна було закріпити сертифікат самого веб-сайту, не даючи навіть правильному ЦС видати інший дійсний сертифікат.

Технічно закріплений не сам сертифікат, а хеш ключа сертифіката. Хеш - це одностороння криптографічна функція. Це означає, що можна перевірити, що сертифікат, представлений веб-переглядачу веб-сайтом, відповідає закріпленому сертифікату, але неможливо використовувати хеш для створення дійсного сертифіката.

Для HPKP потрібно було закріпити принаймні два ключі, принаймні один з яких має бути резервним, а не в поточному ланцюжку сертифікатів. Ця резервна копія дозволяє налаштувати плавний перехід на новий сертифікат, який не заважає користувачам підключатися.

Якщо сертифікат HTTPS, наданий веб-переглядачу веб-сайтом, не збігається з одним із закріплених сертифікатів, то браузер повинен відхилити його та не дати користувачеві обійти повідомлення про помилку сертифіката.

Структура HPKP

Заголовок HPKP складається з трьох обов’язкових частин і двох необов’язкових. Заголовок повинен мати назву «Public-Key-Pins», наступні два або більше сертифікати повинні мати хеш SHA256, закодований base64, закріплений у форматі «pin-sha256=»». Останньою обов’язковою частиною є «max-age», який є лічильником у секундах, протягом якого браузер повинен застосовувати обмеження.

Порада: SHA256 — це алгоритм хешування, який використовується HPKP. Base64 — це набір символів із 64 символів: 0-9, az, AZ і спеціальні символи «+» і «/». Знак «=» використовується для додавання до двох останніх символів, якщо потрібно. 

Додатковими параметрами є «includeSubDomains» і «report-uri». «includeSubDomains наказує браузеру застосувати захист HPKP до будь-якого субдомену поточного веб-сайту на час таймера «максимальний вік». «report-uri» — це функція, яка дозволяє вказати веб-сайт, куди можна надсилати звіти про помилки, і призначена для виявлення та вирішення проблем.

Існує другий варіант заголовка під назвою «Public-Key-Pins-Report-Only». Проте все те саме, якщо виявлено помилку, не виконується жодних дій, окрім повернення повідомлення про помилку до браузера та до «report-uri», якщо таке налаштовано. Варіант лише звіту був розроблений для повномасштабного тестування заголовка перед розгортанням, де помилки не викликають проблем у користувачів.

Проблеми з HPKP

HPKP було застаріло з двох основних причин. Існували два способи, за допомогою яких заголовок міг викликати серйозні проблеми для веб-сайту, який його використовує, вони називалися HPKP Suicide та Ransom PKP.

HPKP Suicide — це проблема, коли законні власники веб-сайту втрачають доступ до всіх закріплених ключів. Це може статися через випадкове видалення, злом, віруси, пошкодження даних або з багатьох інших причин. Через складність правильної реалізації HPKP і, особливо, його оновлення під час ротації сертифікатів, відносно легко зробити помилку конфігурації. Однак із HPKP, якщо ви помилитеся, усі недавні відвідувачі вашого веб-сайту не зможуть отримати доступ до вашого веб-сайту протягом тривалості таймера «максимального віку». Веб-сайт smashingmagazine.com опублікував статтю, де детально описував свій досвід з цією проблемою, що, по суті, перевело сайт в автономний режим для більшості відвідувачів протягом чотирьох днів, перш ніж було розгорнуто виправлення.

Ransom PKP — це теоретична атака, коли хакер отримує доступ до веб-сервера, потім краде всі довірені сертифікати та ключі, а потім вимагає викуп за їх повернення. У звичайному налаштуванні ви можете просто згенерувати нові ключі та сертифікати та створити резервну роботу веб-сайту менш ніж за годину. Однак, якщо увімкнено HPKP, ці ключі закріплюються. Якщо ви не можете надати користувачам закріплений сертифікат, вони не зможуть отримати доступ до веб-сайту протягом таймера «максимального віку». Залежно від конфігурації та наявності резервних копій цю проблему може бути неможливо вирішити.

З обома цими проблемами нові користувачі зможуть отримати доступ до веб-сайту як звичайний, оскільки вони ніколи б не побачили старий заголовок HPKP, який наказує своєму браузеру довіряти лише тим сертифікатам, які зараз відсутні. Проте всім недавнім відвідувачам, таким як постійні клієнти та читачі, доведеться чекати весь час таймера «максимального віку».

Враховуючи серйозність цих проблем, а також складність конфігурації та обслуговування, використання заголовка HPKP було дуже низьким. Зрештою, основні браузери погодилися повністю відмовитися від його підтримки, і через пару років заголовок HPKP був повсюдно застарілим.


Leave a Comment

LinkedIn: Як заблокувати/розблокувати людей

LinkedIn: Як заблокувати/розблокувати людей

Дізнайтеся, як ефективно заблокувати чи розблокувати користувачів на LinkedIn з нашими зрозумілими інструкціями.

Як приховати, за ким ви стежите у Facebook

Як приховати, за ким ви стежите у Facebook

Дізнайтеся, як приховати свою активність на Facebook, щоб інші не бачили, за ким ви стежите. Відкрийте налаштування конфіденційності та захистіть свою інформацію.

Facebook: як приховати своє прізвище

Facebook: як приховати своє прізвище

Дізнайтеся, як приховати своє прізвище у Facebook за допомогою налаштувань мови та конфіденційності для збереження вашої анонімності.

Як виправити проблему «Відео на Facebook не відтворюється» 12 найкращих методів

Як виправити проблему «Відео на Facebook не відтворюється» 12 найкращих методів

Дізнайтеся, як вирішити проблему «Відео на Facebook не відтворюється» за допомогою 12 перевірених методів.

Як додати фігури в Google Docs

Як додати фігури в Google Docs

Дізнайтеся, як додати фігури в Google Docs за допомогою Google Drawings, зображень та таблиць. Використовуйте ці методи для покращення ваших документів.

Google Таблиці: видалити лінії сітки (відображення та роздруківки)

Google Таблиці: видалити лінії сітки (відображення та роздруківки)

Google Таблиці є чудовою альтернативою дорогим програмам для підвищення продуктивності, як-от Excel. Наш посібник допоможе вам легко видалити лінії сітки з Google Таблиць.

Виправлено: історія переглядів YouTube не оновлюється

Виправлено: історія переглядів YouTube не оновлюється

Дізнайтеся, чому YouTube не зберігає вашу історію переглядів і як можна це виправити. Вимкніть блокувальник реклами та перевірте інші рішення для відновлення історії.

Зум: як віддзеркалити веб-камеру

Зум: як віддзеркалити веб-камеру

Дізнайтеся, як налаштувати дзеркальне відображення веб-камери в Zoom для природного вигляду вашого відео під час дзвінків.

Як змінити відображуване ім’я та ім’я в Twitter

Як змінити відображуване ім’я та ім’я в Twitter

У Twitter у вас є два способи ідентифікувати себе: за допомогою ідентифікатора Twitter і відображуваного імені. Дізнайтеся, як правильно змінити ці дані для кращого використання Twitter.

Ваша PS5 перегрівається? 6 способів охолодити

Ваша PS5 перегрівається? 6 способів охолодити

Якщо ваша PlayStation 5 перегрівається, дізнайтеся 6 ефективних способів охолодження для запобігання пошкодженням.