Введение

Возможность, которая может быть встроена в веб-серверы и веб-клиенты HTTP-сжатие - это возможность, которая может быть встроена в веб-серверы и веб-клиенты для улучшения скорости передачи и использования полосы пропускания. Данные HTTP сжимаются до того, как они отправляются с сервера: совместимые браузеры объявят, какие методы поддерживаются на сервере, прежде чем загружать правильный формат; браузеры, которые не поддерживают совместимый метод сжатия, загрузят не сжатые данные. Наиболее распространенными схемами сжатия являются gzip и Brotli; полный список доступных схем поддерживается IANA. Есть два различных способа сжатия может быть сделано в HTTP. На более низком уровне поле заголовка кодирования передачи может указывать на то, что полезная нагрузка сообщения HTTP сжата. На более высоком уровне поле заголовка Content Encoding может указывать, что ресурс, передаваемый, кэшируемый или иным образом ссылаемый, сжат. Сжатие с использованием кодирования контента более широко поддерживается, чем кодирование передачи, и некоторые браузеры не рекламируют поддержку сжатия кодирования передачи, чтобы избежать возникновения ошибок на серверах.

Проблемы, препятствующие использованию сжатия HTTP

В статье 2009 года инженеры Google Арвинд Джейн и Джейсон Глазго утверждают, что более 99 человеческих лет ежедневно теряются из-за увеличения времени загрузки страницы, когда пользователи не получают сжатый контент. Это происходит, когда антивирусные программы мешают соединениям, чтобы заставить их быть разжатыми, когда используются прокси-серверы (с чрезмерно осторожными веб-браузерами), когда серверы неправильно настроены и когда браузерные ошибки останавливают использование сжатия. Internet Explorer 6, который опускается до HTTP 1.0 (без функций, таких как сжатие или трубопроводы), когда за прокси - общая конфигурация в корпоративных средах - был основным браузером, наиболее подверженным отказу на не сжатый HTTP. что делает его развертывание ненадежным. По этой причине некоторые программы, включая Apache HTTP Server, реализуют только кодирование gzip.

Последствия для безопасности

Сжатие позволяет выполнять форму атаки с выбранным простым текстом: если злоумышленник может ввести любой выбранный контент на страницу, он может узнать, содержит ли страница его данный контент, наблюдая увеличение размера зашифрованного потока. Если увеличение меньше, чем ожидалось для случайных инъекций, это означает, что компрессор обнаружил повторение в тексте, т. е. инъекционное содержание перекрывает секретную информацию. Это идея, лежащая в основе КРИМЭ. В 2012 году была объявлена общая атака против использования сжатия данных, называемая CRIME. В то время как атака CRIME могла эффективно работать против большого количества протоколов, включая, но не ограничиваясь TLS, и протоколы прикладного уровня, такие как SPDY или HTTP, только эксплойты против TLS и SPDY были продемонстрированы и в значительной степени смягчены в браузерах и серверах. Эксплойт CRIME против сжатия HTTP не был смягчен вообще, хотя авторы CRIME предупредили, что эта уязвимость может быть даже более распространенной, чем SPDY и TLS сжатие вместе взятые. В 2013 году был опубликован новый пример атаки CRIME против сжатия HTTP, получившей название BREACH. Взломная атака может извлечь логин-токены, адреса электронной почты или другую конфиденциальную информацию из зашифрованного веб-трафика TLS всего за 30 секунд (в зависимости от количества извлекаемых байтов), при условии, что злоумышленник обманывает жертву, заставляя посетить вредоносную веб-ссылку. Все версии TLS и SSL подвержены риску BREACH независимо от используемого алгоритма шифрования или шифра. В отличие от предыдущих примеров CRIME, которые можно успешно защитить от отключения сжатия TLS или сжатия заголовков SPDY, BREACH использует сжатие HTTP, которое невозможно реалистично отключить, поскольку практически все веб-серверы полагаются на него для улучшения скорости передачи данных для пользователей.