HTTP Public Key Pinning
Http |
---|
![]() |
Методы запроса |
Поля заголовка |
Коды статуса ответа |
Методы контроля доступа к безопасности |
Уязвимости безопасности |
HTTP Public Key Pinning ( HPKP ) - это устаревший механизм безопасности в Интернете, поставляемый через HTTP заголовок , который позволяет веб -сайтам HTTPS сопротивляться импористам злоумышленниками, использующими неправильные или иные мошеннические цифровые сертификаты . [ 1 ] Сервер использует его для доставки клиенту ( например, веб -браузере ) набор хешей общедоступных ключей , которые должны появляться в цепочке сертификатов будущих подключений с тем же доменным именем .
Например, злоумышленники могут поставить под угрозу полномочия по сертификатам , а затем сертификаты неправильного выпуска для веб-происхождения . Чтобы бороться с этим риском, веб -сервер HTTPS обслуживает список «закрепленных» хэшей открытого ключа в течение определенного времени; При последующих соединениях, в течение этого времени достоверности, клиенты ожидают, что сервер использует один или несколько из этих общедоступных ключей в своей цепочке сертификатов. Если это не так, отображается сообщение об ошибке, которое не может быть (легко) обходить пользователем.
Техника не прикрепляет сертификаты, а хэши открытого ключа . Это означает, что можно использовать пару клавиш , чтобы получить сертификат от любого органа сертификата, когда кто -то имеет доступ к закрытому ключу. Кроме того, пользователь может закрепить общедоступные ключи корневых или промежуточных сертификатов (созданных властями сертификатов), ограничивая сайт сертификатами, выпущенными указанным органом сертификатов.
Из -за сложности механизма HPKP и возможности случайного неправильного использования (потенциально вызывая условия блокировки системными администраторами), в 2017 году браузеры установили HPKP, а в 2018 году удалили свою поддержку в пользу прозрачности сертификата . [ 2 ] [ 3 ]
Механизм
[ редактировать ]Сервер передает политику HPKP с агентом пользователя через HTTP поле заголовка ответа Public-Key-Pins
(или Public-Key-Pins-Report-Only
для целей только для отчетности).
Политика HPKP определяет хэши информирования об открытом ключе предмета одного из сертификатов в подлинной цепочке сертификатов веб -сайта x.509 (и, по крайней мере, одного резервного ключа) в pin-sha256
Директивы и период времени, в течение которого пользовательский агент должен обеспечить закрепление открытого ключа в max-age
Директива, необязательная includeSubDomains
Директива включить все субдомены (из домена, который отправил заголовок) в политику закрепления и необязательные report-uri
Директива с URL, куда отправить отчеты о нарушении прикрепления. По крайней мере, один из общественных ключей сертификатов в цепочке сертификатов должен соответствовать закрепленному открытому ключу, чтобы цепочка была признана действительной пользовательским агентом.
Во время публикации, RFC 7469 только позволил алгоритм хэш-хаш SHA-256 . ( Приложение A. RFC 7469 упоминает некоторые инструменты и необходимые аргументы, которые можно использовать для производства хэшей для политик HPKP.)
Оператор веб -сайта может выбрать либо привязать общедоступный ключ CORT Certificate Comtine Compity Authority, позволяя только этот авторитет сертификата (и все промежуточные органы, подписанные его ключом) для выпуска действительных сертификатов для домена Веб -сайта и/или для закрепления Ключи (ы) одного или нескольких промежуточных сертификатов выпуска или для закрепления открытого ключа конечного фактора.
По крайней мере, один резервный ключ должен быть закреплен, если необходимо заменить ток -закрепленную клавишу. HPKP не является действительным без этой клавиши резервного копирования (клавиша резервного копирования определяется как открытый ключ, не присутствующий в текущей цепочке сертификатов). [ 4 ]
HPKP стандартизирован в RFC 7469. [ 1 ] Он расширяет статическое закрепление сертификата , которое жестко хард-ключ из общедоступных ключей из хорошо известных веб-сайтов или услуг в веб-браузерах и приложениях. [ 5 ]
Большинство браузеров отключают пиннинг для цепочек сертификатов с частными корневыми сертификатами , чтобы обеспечить различные инспекции корпоративного контента сканеры [ 6 ] и инструменты веб -отладки (такие как MITMProxy или Fiddler ). Стандарт RFC 7469 рекомендует отключить отчеты о нарушении закрепления для «определенных пользовательских» корневых сертификатов, где это «приемлемо» для браузера отключить проверку PIN. [ 7 ]
Репортаж
[ редактировать ]Если пользовательский агент выполняет проверку PIN-кода и не сможет найти действительный отпечаток SPKI Finger в цепочке обслуживания, он опубликует отчет о нарушении форматированного JSON для хоста, указанного в директиве отчета-URI, содержащей подробную информацию о нарушении. Этот URI может быть подан через HTTP или HTTPS ; Тем не менее, пользовательский агент не может отправить отчеты о нарушении нарушения HPKP в HTTPS URI в том же домене, что и домен, для которого он сообщает об этом нарушении. Хосты могут либо использовать HTTP для report-uri
Используйте альтернативный домен или используйте службу отчетности. [ 8 ]
Некоторые браузеры также поддерживают Public-Key-Pins-Report-Only
, который только запускает эту отчетность, не показывая ошибку пользователю.
Критика и снижение
[ редактировать ]Во время своего пикового принятия, как сообщалось, HPKP использовался 3500 из 1 миллиона интернет -сайтов, показатель, который снизился до 650 в конце 2019 года. [ 9 ]
Критика и беспокойство вращались вокруг злонамеренных или человеческих сценариев ошибок, известных как самоубийство HPKP и Ransompkp. [ 10 ] В таких сценариях владелец веб -сайта будет иметь свою способность публиковать новое содержимое в своем домене, сильно затрудненное либо из -за потери доступа к своим собственным ключам, либо объявление о новых ключах злоумышленника.
Поддержка браузера и искажение
[ редактировать ]Браузер | Версия добавлена | Версия устарела | Версия удалена | Примечания |
---|---|---|---|---|
Google Chrome | 46 [ 11 ] | 67 [ 12 ] | 72 [ 13 ] [ 14 ] | |
Опера | 33 [ 15 ] | 54 [ 16 ] | 60 | |
Firefox | 35 | 72 [ 17 ] [ 18 ] | — | Можно включить, установив флаг security.cert_pinning.hpkp.enabled к true . [ 19 ]
|
Internet Explorer | — [ 20 ] | — | — | |
Microsoft Edge | — [ 20 ] | — | — | |
Сафари | — | — | — |
Смотрите также
[ редактировать ]- Управление сертификатов компромисс
- Прозрачность сертификата
- HTTP строгая транспортная безопасность
- Список полей заголовка HTTP
- Управление по сертификации DNS
- Расширение Pinning Pinning для HTTP (HPKP) на веб -документах MDN
Ссылки
[ редактировать ]- ^ Подпрыгнуть до: а беременный Эванс, Крис; Палмер, Крис; Sleevi, Райан (апрель 2015 г.). Открытый ключ расширение для http . IETF . doi : 10.17487/rfc7469 . ISSN 2070-1721 . RFC 7469 .
- ^ Лейден, Джон (2017-10-30). «RIP HPKP: Google отказывается от общедоступного ключа» . Реестр . Получено 2018-12-18 .
- ^ Тунг, Лиам (2017-10-30). «Google: Chrome отступает от общедоступного ключа, и вот почему» . Zdnet . Получено 2018-12-18 .
- ^ «О публичном закреплении ключа» . noncembatant.org . Получено 2015-05-07 .
- ^ «Сертификат и общедоступный ключ - OWASP» . www.owasp.org . Получено 2015-05-07 .
- ^ «FAQ безопасности - проекты хрома» . www.chromium.org . Получено 2015-07-07 .
- ^ Эванс, C.; Palmer, C.; Sleevi, R. (2015). «RFC 7469 - расширение общедоступного ключа для HTTP» . Tools.ietf.org . doi : 10.17487/rfc7469 . Получено 2015-07-07 .
- ^ «Отчеты о нарушении нарушения HPKP» . Скотт Хельм.
- ^ «HPKP больше нет» . Скотт Хельм. 2020-01-20 . Получено 2020-01-30 .
- ^ «Использование функций безопасности, чтобы делать плохие вещи» . Скотт Хельм. 2016-08-15 . Получено 2020-01-30 .
- ^ Старк, Эмили (2015-08-31). «Развертывание открытого ключа с отчетностью HPKP» . Разработчики хрома . Архивировано из оригинала 2023-01-16 . Получено 2023-03-10 .
- ^ Medley, Joe (2018-06-07). «Объяснения и удаления в хроме 67» . Разработчики Google . Архивировано из оригинала 2023-03-10 . Получено 2023-03-10 .
- ^ Палмер; Estark; Rsleevi (2022-09-13). «Удалить HTTP Public Key Pinning - состояние платформы Chrome» . www.chromestatus.com . Архивировано из оригинала 2022-05-25 . Получено 2019-11-18 .
- ^ Medley, Joe (2020-06-27). «Объяснения и удаление у Chrome 72 - разработчиков Chrome» . Разработчики хрома . Архивировано из оригинала 2022-11-18 . Получено 2023-03-10 .
- ^ Bynens, Mathias (2015-10-27). "Opera 33 выпущена" . GitHub . Опера Архивировано из оригинала 2023-03-10 . Получено 2023-03-10 .
- ^ «Что нового в Chromium 67 и Opera 54» . GitHub . Опера 2018-06-28. Архивировано из оригинала 2023-03-10 . Получено 2023-03-10 .
- ^ «HTTP Public Key Pinning больше не поддерживается» . Совместимость с сайтами Firefox . 14 ноября 2019 года. Архивировано с оригинала 2020-05-29 . Получено 2020-02-19 .
- ^ Килер, Дана (2019-11-13). «Изменение исходного кода Mozilla, удаляющее HPKP, включая обсуждение и причины этого изменения (ошибка 1412438)» . Mozilla Firefox контроль версий . Архивировано из оригинала 2023-03-10 . Получено 2023-03-10 .
- ^ "mozilla-central: changeset 501812:d791bfa31f08ec478b2ef6ca4f89b3a8849d723b" . hg.mozilla.org . Получено 2019-11-18 .
- ^ Подпрыгнуть до: а беременный «Статус расширения общедоступного ключа для HTTP в Microsoft Edge находится рассмотрено» . Microsoft Edge Development . Архивировано с оригинала 2016-12-20 . Получено 2018-09-21 .