Атака SWEET32: Исследователи обнаружили новый способ взлома шифров 3DES и Blowfish

Атака SWEET32: Исследователи обнаружили новый способ взлома шифров 3DES и Blowfish

Атака, которая получила название SWEET32, посвящен отдельный сайт, ее подробности и демо-видео исследователи планируют представить на конференции ACM Conference on Computer and Communications Security, которая в следующем месяце пройдет в Австрии.

Исследователи информационной безопасности Картикеян Баргаван (Karthikeyan Bhargavan) и Гаетан Лоран (Gaëtan Leuren) разработали атаку на шифры 3DES и Blowfish. Например, с ее помощью можно получить использующиеся для аутентификации cookie из зашифрованного 3DES HTTPS-трафика, а также восстанавливать имена пользователей и пароли из зашифрованного с помощью Blowfish трафика, передаваемого через VPN.

Атака, которая получила название SWEET32, посвящен отдельный сайт, ее подробности и демо-видео исследователи планируют представить на конференции ACM Conference on Computer and Communications Security, которая в следующем месяце пройдет в Австрии. Мы собрали известную на данный момент информацию в своем материале.

В чем проблема


Криптографические протоколы вроде TLS, SSH, IPsec и OpenVPN используют алгоритмы блочного шифрования (AES, Triple-DES, Blowfish). Таким образом обеспечивается шифрование передаваемых между клиентом и сервером данных. Данные при этом разбиваются на блоки фиксированной длины, каждый из которых шифруется отдельно. Более старые шифры вроде Triple-DES и Blowfish используют размер блока равный 64 битам, а AES использует размер блока 128 бит.

Короткая длина блока делает шифр уязвимым к «атакам дня рождения». Исследователи заявляют о том, что подобные атаки встречаются для 64-битных шифров протоколов TLS и OpenVPN. Подобные алгоритмы шифрования используются огромным количеством ресурсов в интернете.

SWEET32 — это атака поиска коллизий в режиме сцепления блоков с использованием обратной связи CBC. Например, злоумышленник, который может мониторить долго существующие Triple-DES HTTPS-соединения между браузером и сайтом, имеет возможность восстановить HTTP-cookies — для этого нужно будет сохранить 785 гигабайт трафика.


Перехват защищенного трафика

На практике это позволяет расшифровывать HTTPS-соединения — при условии, что токен аутентификации передается в каждом запросе. Благодаря тому, что возможно предугадать содержание заголовков сообщений (или наличию возможности их контроля) злоумышленник может сгенерировать большое число запросов с некоторым количеством заранее предсказуемых данных в ответах и, в результате, попытаться расшифровать нужные сессии и узнать токен.

В ходе PoC-атаки исследователям удалось сделать это меньше чем за два дня с помощью специального JavaScript-кода для генерации трафика.

С точки зрения вычислительной сложности атака SWEET32 сравнима с недавними атаками на шифр RC4. Кроме того, исследователям удалось осуществить похожие атаки на VPN-сессии, использующие 64-битные шифры — к примеру, на практике эта ситуация может встретиться в случае применения OpenVPN, который настроен на использование Blowfish.

Насколько все серьезно


Важным требованием для осуществления атаки является необходимость отправки большого количества запросов с помощью одного и того же TLS-соединения — это является серьезным сдерживающим фактором для практического проведения подобных атак. Таким образом, атакующий должен найти клиента и сервер, которые не только общаются, например, с помощью Triple-DES, но и обмениваются большим количеством HTTP-запросов внутри одного TLS-соединения без выпуска новых ключей.

Такая ситуация возможна — все зависит от сервера, поскольку все протестированные браузеры (Firefox, Chrome, Opera) используют TLS-соединение до тех пор, пока сервер держит его открытым. В свою очередь, многие HTTP-серверы закрывают TLS-соединение по достижению определенного лимита переданного трафика, даже если оно еще остается активным. К примеру, Apache и Nginx ограничивают число запросов, которые можно отправить в рамках одного соединения, числом 100. Но, к примеру, у IIS при использовании стандартных настроек подобных лимитов нет.

В итоге общее число серверов, которые принимают большое количество запросов по одному соединению, остается большим, пишут исследователи. Исследователи просканировали веб-серверы из каталога Alexa — для этого использовался инструмент cipherscan. Выяснилось, что 86%, поддерживающих TLS, включают Triple-DES в качестве одного из используемых шифров.

Были выявлены 11483 разных HTTPS-северов, 226 (1.9%) из которых обмениваются с клиентами данными с помощью Triple-DES. 72 из этих серверов (0.6% от общего числа) держали соединение открытым как минимум для 800 тысяч запросов. Это значит, что длительность тестовой атаки не говорит о ее нереализуемости — около 0,6% HTTPS-соединений в интернете уязвимы перед ней.

PoC-атака


Ниже представлен код атаки SWEET32. Для ее осуществления используются веб-воркеры, генерирующие XmlHttpRequests.

Содержание файла attack.html:

<html>
  <body>
    <script>
    var W = new Array;
    for (var i=0; i<8; i++) {
        var x = new Worker("worker.js");
        W.push(x);
    }
    </script>
  </body>
</html>

Файл worker.js:

var url = "https://10.0.0.1/index.html";
var xhr = new XMLHttpRequest;

// Expand URL to ~4kB using a query string
// Alternatively, force a large cookie
url += "?";
var x = 10000000;
for (var i=0; i<=500; i++) {
    url += x++;
}

while(true) {
    xhr.open("HEAD", url, false);
    xhr.withCredentials = true;
    xhr.send();
    xhr.abort();
}

В ходе эксперимента «захват» зашифрованных пакетов проводился с помощью tcpdump, а для извлечения блоков шифротекста применялась программа на C++, использующая libpcap.

В случаях атаки на HTTPS и VPN каждый запрос отправляется в отдельной зашифрованной записи, содержащей обычный текст в фиксированной позиции. Это позволяет атакующему знать, к какому блоку открытого текста относится блок шифротекста (и, например, соответствующим образом назначать cookie до лимита блокировки). После сохранения необходимого объёма трафика программа на C++ сортирует блоки шифротекста для выявления коллизий. На расшифровку сохраненного трафика у исследователей ушло около четырех часов.

Как защититься


Исследователи рекомендуют отказаться от использования 64-битных “legacy-шифров” блочного шифрования. Если же это по какой-то причине невозможно, то снизить вероятность ее успешного проведения можно следующим образом:

Веб-серверы и VPN должны быть настроены на предпочтение 128-битных шифров. Согласно данным исследователей, около 1,1% процента из 100 тысяч самых популярных сайтов каталога Alexa и 0,5% из миллиона самых популярных поддерживают AES, но предпочитают использовать 3DES.

Веб-браузеры должны использовать 3DES в качестве “fallback-only” шифра во избежание ситуации, при которой он используется в общении с серверами, поддерживающими AES.

TLS-библиотеки и приложения должны ограничивать длину TLS-сессий для 64-битных шифров. Сделать это можно с помощью механизма повторной установки соединения.

Пользователи OpenVPN могут изменить используемый шифр с «дефолтного» Blowfish на AES. Если сделать этого нельзя, то необходимо принудительно инициировать повторный выпуск ключей с помощью функции reneg-bytes 64000000.

Цифровые следы - ваша слабость, и хакеры это знают.

Подпишитесь и узнайте, как их замести!