Техническое: типовые настройки DH и возможные закладки

Появилась новая работа, посвящённая быстрому вычислению секрета протокола Диффи-Хеллмана (DH) из записанного трафика – популярная статья Arstechnica, – речь идёт о том, что можно, и это показано на практике, за обозримое время вычислить секрет, полученный в рамках обмена DH, используя даже университетское оборудование. Под “университетским” имеется в виду, что это не супердорогой специализированный вычислитель. Для успешной атаки требуется, чтобы модуль DH был коротким – 1024 бита, – и имел специальный вид. При этом обнаружить “специальный вид” снаружи и использовать для ускорения вычислений – нельзя, откуда и предположение о закладках.

О том, что найти секреты DH в произвольной короткой, 1024-битной группе, можно, если у вас есть достаточно мощный, но доступный на уровне современных технологий, компьютер и вы предвычислили нужную “арифметическую структуру” группы, известно довольно давно. Сейчас решение продемонстрировали на практике, подтвердив, что если правильно выбрать модуль, то объём вычислений ещё сокращается на несколько порядков.

Для того, чтобы атака сработала, требуются типовые группы. В более строгом случае, с подготовленным модулем, используемую группу нужно прямо задать. (Более мягкий вариант – работает с любой заранее известной 1024-битной группой, но для каждой потребуется большой объём предварительных вычислений и большой объём памяти для хранения результатов.)

Самое занимательное, что с типовыми группами проблем как раз нет. Например, в Рунете (.RU, .РФ) около 280 тыс. имён аресует узлы, поддерживающие HTTPS/TLS и классический вариант DH, которые используют всего две различных группы с разрядностью 1024 бита. Одна – это группа по умолчанию из mod_ssl, а вторая, насколько я понимаю, из настроек по умолчанию модуля SSL в nginx. Обе группы, очевидно, потенциально уязвимы. (Пояснение, 12/10/16: я скорректировал текст – изначально было написано, что 280 тыс. серверов, но речь идёт о числе доменов – имён TLS-хостов.)

Про то, что генерация общего секрета по протоколу Диффи-Хеллмана вовсе не является эквивалентом симметричных ключей, которые “есть только на узлах”, я не раз писал ранее. Например – в записке про извлечение секрета DH из трафика.

Адрес записки: https://dxdt.ru/2016/10/12/8138/

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 12

  • 1. 13th October 2016, 19:59 // Читатель sarin написал:

    а сколько всего этих групп может быть?
    в рамках современных протоколов

  • 2. 13th October 2016, 20:05 // Читатель Сергей Виноградов написал:

    А что, DH до сих пор 1024 бита использует???

    И что порекомендуете делать?

  • 3. 14th October 2016, 18:35 // Читатель xM написал:

    > DH до сих пор 1024 бита использует
    Биты битам рознь.

  • 4. 14th October 2016, 22:18 // Александр Венедюхин:

    > а сколько всего этих групп может быть?
    > в рамках современных протоколов

    Группа DH определяется простым числом (модулем). Соответственно, для разрядности 2048 бит таких чисел очень много. Ну, если я правильно прикинул, примерно 2^2038 (из самой доступной “для калькулятора” оценки – x/(ln(x)-1); которая, конечно, при таких величинах не слишком точна). То есть, огромное количество, каждый сам может себе выбрать модуль (даже если мы вычтем числа из интервала 1..2^1024, потому что короткие нам не подходят).

    Тем не менее, рекомендуется использовать типовые группы, но модули для них должны быть получены тем или иным “прозрачным” способом. Например, на основе какого-нибудь известного числа, типа Пи или e. Или методом “посева” генератора псевдослучайных чисел значением той или иной хеш-функции, от опубликованного случайного числа.

  • 5. 14th October 2016, 22:21 // Александр Венедюхин:

    > А что, DH до сих пор 1024 бита использует???

    Да, к сожалению, нередко.

    > И что порекомендуете делать?

    Генерировать собственные параметры (openssl dhparam) и переходить на 2048 бит.

  • 6. 15th October 2016, 01:35 // Читатель Z.T. написал:

    Заметка: Google Chrome настолько потеряли надежду на админов малых сайтов что отменили поддержку DHE. Я думаю скоро объявят что без ECDHE не получишь замочка. Отменить CBC еще далеко, а ECDHE поддерживают и старые браузеры. Но понятно что они хотят привести TLS+HTTP/1.1 к требованиям TLS+HTTP/2.

  • 7. 17th October 2016, 14:56 // Читатель sarin написал:

    так может ну его такого ф топку? и перейти на RSA.
    те же 2048 бит

  • 8. 18th October 2016, 12:51 // Александр Венедюхин:

    > и перейти на RSA.

    С RSA тоже куча особенностей. Кроме того, в классическом варианте использования, RSA не позволяет добиться прогрессивной секретности от протокола: раскрытие долговременного ключа позволяет извлечь сеансовый из трафика. Ну и это не единственный недостаток. Скажем, архитектурной ошибкой является использование механизма аутентификации для передачи ещё и сеансового секрета. И так далее. Архитектурные дефекты пытаются исправлять. Собственно, радикальным решением является скорее не переход на RSA, а добавление симметричного секрета, заранее известного узлам, к DHE (схема есть в TLS 1.3). Но это очень неудобно, так как схему крайне сложно (я бы сказал просто нереально) реализовать на практике для массового сервиса.

    А так – DHE подходит лучше, чем RSA.

  • 9. 28th October 2016, 17:55 // Читатель Z.T. написал:

    off topic, @Александр Венедюхин
    Будете ли вы переходить с WoSign на Let’s Encrypt? А еще, почему такие старые версии Apache и php? https://dev.ssllabs.com/ssltest/analyze.html?d=dxdt.ru

  • 10. 28th October 2016, 18:19 // Александр Венедюхин:

    > Будете ли вы переходить с WoSign на Let’s Encrypt?

    Нет, на Let’s Encrypt не буду – я не хочу возиться с короткоживущими сертификатами и их скриптами на своём сервере. В принципе, основной сертификат на dxdt.ru от COMODO ECC Domain Validation Secure Server CA (довольно давно), потому что ECC. Сертификат от WoSign используется для RSA, но, думаю, в нём нет необходимости, просто удалю, видимо. Раньше этот же (WoSign) сертификат был установлен на https://tls.dxdt.ru/ – но там я уже некоторое время назад, когда стало ясно, что WoSign отзовут, заменил тоже на Comodo.

    > А еще, почему такие старые версии Apache и php?

    Хм. Сложно сказать, у меня нет тут обоснования. Наверное, просто привычка – конфиги там и пр.

  • 11. 30th October 2016, 20:09 // Читатель Сергей Виноградов написал:

    > Наверное, просто привычка – конфиги там и пр.

    А что, на сервере автоматического обновления не настроено?

  • 12. 30th October 2016, 20:16 // Александр Венедюхин:

    > А что, на сервере автоматического обновления не настроено?

    Автоматическое обновление – обычно, зло. А уж автоматическое обновление Apache и PHP, если о таком даже и подумать – совсем перебор, на мой вкус. Тем более, обновление в другую ветку.