Sweet32 attack
Sweet32 attack — это атака по стороннему каналу, использующая уязвимость в блочных шифрах с размером блока 64 бита (например, 3DES, Blowfish, IDEA) при работе в режимах сцепления блоков (CBC) или поточном режиме (CTR, GCM, CCM). Атака позволяет злоумышленнику, имеющему возможность перехватывать и модифицировать зашифрованный трафик, восстановить открытый текст сеансовых данных (например, cookie, пароли, токены аутентификации) при условии, что зашифровано достаточно большое количество данных (порядка 32 ГБ для HTTPS). Название атаки происходит от английского «Sweet32» (сладкий 32) — отсылка к 32-битному размеру блока шифра.
История
Уязвимость была обнаружена и впервые опубликована в 2016 году группой исследователей из Кембриджского университета (Кшиштоф Хипс, Мартин Клеппманн, Кристиан Россов) и компании INRIA (Франция). Результаты были представлены на конференции ACM CCS 2016. До этого момента считалось, что блочные шифры с 64-битным блоком (например, 3DES) могут быть безопасны при использовании в режимах CBC или CTR, если объём зашифрованных данных не превышает определённых пределов. Sweet32 показала, что практическая атака возможна при значительно меньших объёмах данных, чем предполагалось ранее.
Механизм атаки
Принцип действия
Атака основана на коллизиях блоков шифротекста. В блочных шифрах с размером блока 64 бита (8 байт) количество возможных значений блока составляет 2^64. При шифровании большого объёма данных в режиме CBC или CTR вероятность коллизии (совпадения двух блоков шифротекста) возрастает по парадоксу дня рождения. Для 64-битного блока коллизия становится вероятной после шифрования примерно 2^32 блоков (около 32 ГБ данных). При обнаружении коллизии злоумышленник может вычислить XOR (исключающее ИЛИ) между соответствующими открытыми текстами, если известен один из них (например, через внедрение известного текста).
Условия для атаки
Для успешной реализации Sweet32 необходимо:
- Использование блочного шифра с 64-битным блоком (3DES, Blowfish, IDEA, CAST-128, RC2, TEA и др.).
- Режим работы шифра, допускающий коллизии (CBC, CTR, GCM, CCM, OCB).
- Возможность злоумышленника перехватывать и модифицировать трафик (атака «человек посередине»).
- Возможность внедрять в сеанс известные данные (например, через JavaScript-код на веб-странице, который заставляет браузер отправлять запросы с известным содержимым).
- Достаточный объём зашифрованных данных (обычно от 32 ГБ до 128 ГБ, в зависимости от реализации).
Практическая реализация
На практике атака чаще всего применяется к протоколу HTTPS. Злоумышленник, контролирующий сетевую инфраструктуру (например, Wi-Fi-точку доступа), может внедрить в веб-страницу вредоносный код, который заставляет браузер жертвы многократно отправлять запросы к целевому серверу. Каждый запрос содержит известные данные (например, cookie сессии), которые шифруются с использованием 64-битного шифра. После накопления достаточного объёма зашифрованных данных (обычно несколько десятков гигабайт, что может занять от нескольких часов до нескольких дней) злоумышленник анализирует коллизии и восстанавливает секретные данные (например, cookie аутентификации).
Уязвимые системы и протоколы
Протоколы
- HTTPS (TLS/SSL): уязвимы версии протоколов, поддерживающие шифры с 64-битным блоком (3DES, Blowfish, IDEA). В TLS 1.0, 1.1, 1.2 такие шифры могли быть включены по умолчанию.
- SSH: уязвимы реализации, использующие 3DES или Blowfish в режиме CBC.
- IPsec: уязвимы конфигурации, использующие 3DES или Blowfish.
- OpenVPN: уязвимы конфигурации с 3DES или Blowfish.
- DNSSEC: уязвимы реализации, использующие 3DES для подписи.
Программное обеспечение
- OpenSSL: до версии 1.0.2i (2016) поддерживал 3DES и Blowfish по умолчанию.
- GnuTLS: до версии 3.4.15 (2016) поддерживал 3DES.
- NSS (Mozilla): до версии 3.27 (2016) поддерживал 3DES.
- Microsoft Schannel: до обновления безопасности MS16-121 (2016) поддерживал 3DES.
- Java (JSSE): до версии 8u111 (2016) поддерживал 3DES.
- LibreSSL: до версии 2.5.0 (2016) поддерживал 3DES.
Масштаб уязвимости
По данным исследователей, на момент публикации (2016 год) около 7% HTTPS-серверов в интернете поддерживали 3DES в качестве предпочтительного шифра. Наиболее уязвимыми были серверы, работающие на старых версиях OpenSSL (до 1.0.2i) и NSS (до 3.27). Атака требовала значительного объёма данных (от 32 ГБ), что делало её практической только для целенаправленных атак, а не для массового перехвата.
Меры защиты
Для серверов
- Отключение 64-битных шифров: в конфигурации TLS/SSL необходимо отключить все шифры с размером блока 64 бита (3DES, Blowfish, IDEA, CAST-128, RC2, TEA). Вместо них следует использовать шифры с 128-битным блоком (AES, Camellia, ChaCha20).
- Обновление программного обеспечения: установка последних версий OpenSSL, GnuTLS, NSS, LibreSSL, Java, Microsoft Schannel, которые отключают 3DES по умолчанию.
- Использование современных протоколов: TLS 1.3 не поддерживает 3DES и другие 64-битные шифры.
- Ограничение объёма данных: для систем, где отключение 64-битных шифров невозможно (например, из-за обратной совместимости), следует ограничить объём данных, шифруемых с их использованием, до безопасного уровня (менее 32 ГБ).
Для клиентов
- Обновление браузеров: современные браузеры (Chrome, Firefox, Safari, Edge) после 2016 года отключили поддержку 3DES по умолчанию.
- Использование HTTPS Everywhere: расширение для браузеров, принудительно использующее защищённые соединения.
- Ограничение времени сессии: короткие сессии (менее нескольких часов) снижают риск накопления достаточного объёма данных.
Для администраторов
- Аудит конфигураций: проверка серверов на наличие 64-битных шифров с помощью инструментов (например, SSL Labs, testssl.sh).
- Мониторинг трафика: выявление аномально большого объёма шифрованных данных от одного клиента.
- Использование HSTS: HTTP Strict Transport Security для принудительного использования HTTPS.
Влияние на индустрию
После публикации Sweet32 в 2016 году:
- IETF (Internet Engineering Task Force) выпустила рекомендацию RFC 7465 (2015), запрещающую использование 3DES в TLS.
- NIST (National Institute of Standards and Technology) в 2016 году объявил 3DES устаревшим и рекомендовал его отключение к 2023 году.
- Mozilla, Google, Apple, Microsoft выпустили обновления браузеров и операционных систем, отключающие 3DES по умолчанию.
- OpenSSL в версии 1.1.0 (2016) отключил 3DES по умолчанию.
- PCI DSS (Payment Card Industry Data Security Standard) в версии 3.2 (2016) запретил использование 3DES для защиты данных платежных карт.
Критика и ограничения
Основные ограничения атаки Sweet32:
- Требование большого объёма данных: для успешной атаки необходимо перехватить от 32 ГБ до 128 ГБ зашифрованных данных, что на практике возможно только при длительных сессиях (несколько часов или дней) и высокой пропускной способности канала.
- Необходимость контроля над трафиком: атака требует позиции «человек посередине», что ограничивает её применение локальными сетями (Wi-Fi, корпоративные сети) или атаками на уровне провайдера.
- Сложность внедрения известных данных: для восстановления секретных данных (например, cookie) злоумышленнику необходимо внедрить в сеанс известные данные, что возможно только при наличии уязвимости в веб-приложении (например, XSS).
- Время атаки: для накопления 32 ГБ данных при типичной скорости HTTPS-соединения (1-10 Мбит/с) требуется от нескольких часов до нескольких суток, что делает атаку малоприменимой для краткосрочных сессий.
Несмотря на эти ограничения, Sweet32 считается значимой уязвимостью, так как она продемонстрировала, что 64-битные блочные шифры небезопасны для современных протоколов, и ускорила их повсеместное отключение.
Интересные факты
- Название «Sweet32» является отсылкой к 32-битному размеру блока и слову «sweet» (сладкий), что, по словам авторов, отражает «сладкий» характер атаки (она требует много данных, но даёт точный результат).
- Атака была впервые продемонстрирована на протоколе HTTPS, но позже была адаптирована для SSH, IPsec и OpenVPN.
- Sweet32 считается более опасной, чем атака BEAST (2011), так как не требует уязвимости в реализации протокола, а использует фундаментальное свойство блочных шифров.
- В 2017 году была опубликована атака «Sweet32+», которая снижала требуемый объём данных до 16 ГБ за счёт комбинирования с другими методами (например, сжатие данных).
Источники
- K. Hyppönen, M. Kleppmann, C. Rossow, «Sweet32: Birthday Attacks on 64-bit Block Ciphers in TLS», ACM CCS 2016.
- RFC 7465, «Prohibiting RC4 Cipher Suites», IETF, 2015.
- NIST Special Publication 800-131A, «Transitioning the Use of Cryptographic Algorithms and Key Lengths», 2016.
- OpenSSL Security Advisory, «Sweet32 Attack», 2016.
- Mozilla Security Advisory, «MFSA 2016-89: 3DES cipher suites removed», 2016.
- Microsoft Security Bulletin MS16-121, «Security Update for Schannel», 2016.
- PCI DSS v3.2, «Requirement 4: Encrypt transmission of cardholder data across open, public networks», 2016.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →