Русская Википедия:HSTS

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

HSTS (сокр. от Шаблон:Lang-en) — механизм, принудительно активирующий защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP (http://). Механизм описан в RFC6797 в ноябре 2012 года.

HSTS помогает предотвратить часть атак, направленных на перехват соединения между пользователем и веб-сайтом, в частности атаку с понижением степени защиты и угон куки (cookie).

Дополнительную защиту https-соединений предоставляют методы Certificate pinning (хранение списка разрешенных для домена сертификатов или CA в исходных текстах браузера) и HTTP Public Key Pinning. Они предотвращают множество возможностей подмены tls-сертификатов https-сервера.

Спецификация

Спецификация была разработана и предложена Джеффом Оджом (=JeffH, Paypal), Адамом Бартом (Университет Беркли), Колином Джексоном (Университет Карнеги — Меллон). После обсуждения в рабочей группе IETF WebSec спецификация была принята в качестве RFC 19 ноября 2012 года.

Механизм

Сервер сообщает о политиках HSTS с помощью специального заголовка при подключении через шифрованный HTTPS (заголовок HSTS при подключении по нешифрованному HTTP игнорируется)[1]. Например, сервера Википедии посылают заголовок HSTS со сроком действия 1 год, распространяющийся на все поддомены (Поле max-age указывает срок действия в секундах, величина 31536000 приблизительно соответствует одному году): Strict-Transport-Security: max-age=31536000; includeSubDomains; preload.

Когда сайт применяет политику HSTS, пользовательские браузеры, корректно воспринимающие заголовок HSTS, должны[2]:

  1. Автоматически автономно преобразовывать все http-ссылки на данный сайт в https-ссылки. (Например, вместо http://ru.wikipedia.org/wiki/HSTS браузер будет использовать https://ru.wikipedia.org/wiki/HSTS, преобразование произойдет до реального обращения к серверу.)
  2. Если безопасность соединения https не может быть проверена (в частности, если TLS-сертификат сервера не подписан доверенным ключом), будет показано сообщение об ошибке, и пользователь будет лишен доступа к сайту[3].

Действующие политики HSTS помогают защитить пользователей сайта от части пассивных и активных атак[4]. Атаки класса MiTM значительно усложняются.

Статический список HSTS

Исходный вариант HSTS не защищает первое подключение пользователя к сайту. Злоумышленник может легко перехватить первое подключение, если оно происходит по протоколу http. Для борьбы с этой проблемой большинство современных браузеров использует дополнительный статический список сайтов (HSTS preload list), требующих использования протокола https. Такой список составляется авторами Google Chrome/Chromium с 2010 года[5][6], на базе него составляются подобные списки для браузеров Microsoft (Edge и Internet Explorer, с 2015 года)[7], Safari[8] и в Mozilla Firefox (с 2012 года)[9]. В подобный список по запросу включаются сайты, использующие HSTS-заголовок с максимальным сроком и флагом preload, и не планирующие отказ от https[9], однако технология плохо масштабируется[8].

По состоянию на конец 2014 года, в статическом списке находилось более тысячи доменов, из них около четверти — домены Google[10].

Использование

Файл:Chromium HSTS settings screenshot.png
Страница отладки HSTS и Шаблон:Нп3 в браузере Chromium для сайта en.wikipedia.org (до внесения в список HSTS preload, динамический HSTS; HPKP не применяется).

Отслеживание с помощью HSTS

HSTS может быть использован для трудноподавляемого маркирования браузеров высокоустойчивыми метками (см. также Супер-cookie) независимо от использования режима "инкогнито".[15]

Браузер Mozilla Firefox начиная с версии 85 предоставляет средства противодействия отслеживанию основанному на HSTS-кэшировании[16].

Примечания

Шаблон:Примечания

Ссылки