Поддерживает ли SslStream (или сам LSASS) TLS compression? Если да - то какими опциями рееста\настройками ОС\вызовами из кода можно манипулировать (включать\отключать) сжатием?
Ответ
Скажу коротко:
Нет
SslStream в сочетании с протоколом TLS 1.2 поддерживает только null compression. Попробуйте отослать запрос из SslStream и посмотреть, какие есть "Compression Methods" при Client Hello, там будет только Comperssion Method: null.
Сжатие данных в TLS не поддерживается во многих современных библиотеках, да и не только в .NET, потому что его поддержка лишена смысла из-за аспектов безопасности и здравых соображений. Да, это помогает медленным каналам, но здесь появляется уязвимость..
Стандарт TLS 1.3, который сейчас находится в стадии "черновика" предусматривает удаление такого понятие как сжатие данных.
Все это связано с тем, что появилась различные атаки на SSL/TLS при использовании сжатия, одна из них называется CRIME (Compression Ratio Info-leak Made Easy), хотя есть еще BREACH (Browser Reconnaissance & Exfiltration via Adaptive Compression of Hypertext)
Алгоритм атаки
Если говорить кратко, то атакующий должен использовать сначала первичную атаку «Man In The Middle» (MITM), т.е Хакер должен перехватывать весь пользовательский трафик, неважно как, пусть даже разрезав ваш кабель и подсоединив его к своему компьютеру.
Добавляя в него свои данные, он отправляет запросы на сервер. Алгоритм сжатия в силу своих особенностей, при повторении части текста естественно сжимает его.
После отправки данных на сервер, хакер смотрит за длиной сообщения и если оно уменьшилось, значит подобрана правильная последовательность. Тем самым можно подбирать отдельные строки и параметры в запросе, например, значения куки. Но есть ограничения — часть данных нужно знать, чтобы от неё начать подбирать остальную информацию.
В атаке не взламывается шифр, не подбирается ключ шифрования, а подбираются значения зашифрованного текста.
Комментариев нет:
Отправить комментарий