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



    Исследователи информационной безопасности Картикеян Баргаван (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.
    • +22
    • 14,1k
    • 5
    Positive Technologies
    167,00
    Компания
    Поделиться публикацией

    Комментарии 5

      0
      В случае, если провайдер захочет провести атаку, он может подменять TLS HELLO, в котором изменять список сайферов, оставляя только 3DES и Blowfish…
        0

        Если настолько не доверять провайдеру, можно отказаться от fallback опций и использовать только AES.

          0
          Вы правы. Можно даже в браузерах повыключать их.
        0
        «We assume that the attacker can control some JavaScript on a web page loaded by the user's browser, either by actively tampering with an HTTP response on the wire, or by hosting a malicious website that the user is fooled into visiting. We also assume that the attacker can observe all the encrypted traffic between the target browser and the secure website. „
        “The attacker runs malicious JavaScript code on the victim's browser that repeatedly sends HTTP..»


        Если «attacker runs malicious JavaScript code on the victim's browser», то зачем все остальное?
        Как то слишком много предположений для успешной реализации атаки. Что бы громко прокричать «мы сломали 3DES»?
        А потом я буду убеждать народ прибегающий с криками «все плохо… все пропало, мы тут прочитали что 3DES сломан», что не так все плохо…
          0
          Не совсем понятно почему при описании атаки указаны только 3DES и Blowfish.
          Судя по описанию она будет справедлива для любых шифров с длиной блока 64 бит и режимом шифрования CBC.

          ГОСТ 28147-89 aka ГОСТ 34.12-2015 «Магма» (длина блока 64 бит) — похачен?

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое