Параметры группы публичны по замыслу, и именно эта публичность делает их легко игнорируемыми. В Diffie-Hellman над конечным полем модуль и генератор общие, а личные показатели и получаемые ключи сеанса — нет. Дорогая стадия атаки решетом по числовому полю зависит от группы, а не от одного обмена, поэтому одна слабая группа, используемая везде, становится общей ответственностью. Называть параметры публичными — точно и не по существу, потому что повторно используется стоимость атаки именно на эту группу.

Открытая половина не является уязвимой половиной, и в этом ловушка

Обычный половинчатый довод говорит, что параметры опубликованы в стандарте, значит атакующий их уже знает и сокрытие ничего не изменит. Оба утверждения верны, и ни одно не следует из другого. Поставляемая по умолчанию группа публична, а закрытая группа, созданная вами на прошлой неделе, тоже видна любому, кто завершает рукопожатие. Секретность никогда не была контролем; ими являются стойкость и проверка.

Меняется то, сколько мест делят одну и ту же слабость. Организация, создающая собственную 2048-битную группу, платит за свою атаку, а протокольная величина по умолчанию, выбранная миллионами, амортизирует одну стоимость на всех. В этом смысле необычная группа не лучше автоматически. Слишком маленькая необычная группа — просто меньший общий секрет, за которым меньше глаз.

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

Что предвычисление действительно даёт атакующему

У решета по числовому полю есть стадия, зависящая только от простого числа, и её результат пригоден повторно против каждого обмена, использующего это простое число. Таков весь механизм исторической тревоги: дорогая часть оплачивается один раз, а предельная стоимость каждого следующего сеанса снижается. Свежие показатели по-прежнему защищают каждый отдельный обмен от пассивного наблюдателя, пока группа достаточно велика, чтобы просеивание было неосуществимым. Оба утверждения совместимы, и большинство споров на эту тему возникает из выбора одного и отбрасывания другого.

Работа Logjam 2015 года продемонстрировала понижение до 512-битного Diffie-Hellman экспортного уровня и оценила, во что обойдётся атака на более крупные, широко повторно используемые группы при значительных ресурсах. Демонстрация была конкретной, оценки были оценками, и ни то ни другое не было доказательством того, что конкретный сеанс VPN был расшифрован.

Ссылайтесь на работу ради механизма и продемонстрированного понижения, а не как на измерение вашего развёртывания. Старая статистика о том, сколько серверов делили группу по умолчанию, описывает интернет того года, а не сеть, которую можно обследовать сегодня. Полезное, что стоит перенести, — это вопрос: согласуют ли ваши устройства всё ещё группу, которая мала или слабо проверена?

Стандартизованный не значит слабый

RFC 7919 определяет именованные группы над конечным полем, чтобы обе стороны договаривались о группе по идентификатору и применяли согласованную политику. Стандартизованность — преимущество, потому что она устраняет неоднозначность переговоров и позволяет реализации отвергать неподдерживаемые размеры. Именованная группа слаба только тогда, когда её размер ниже политики, которую вы якобы соблюдаете, а не потому, что она появляется в документе. Та же логика относится к группам эллиптических кривых, у которых другая структура и другие режимы отказа.

Держите конструкции раздельно, когда рассуждаете о них. Вывод о Diffie-Hellman над конечным полем ничего не говорит об X25519, а вывод о 1024-битной группе MODP ничего не говорит о 3072-битной. Политика стойкости задаётся по механизму, по размеру и по версии протокола, поэтому фраза стойкая криптография не является проверяемым утверждением.

Аутентификация — это другая половина, и она не заменяет. Стойкая группа без проверки партнёра оставляет атакующего посередине, а действительный сертификат не спасёт 768-битный обмен. Рассматривайте их как две независимые линии, затем подтвердите, что обе действительно согласуются.

Прочитайте согласованную группу на реальном соединении

Читайте согласованную группу с устройства, а не из шаблона конфигурации. Шаблоны описывают намерение, а интересное значение — то, о котором обе стороны договорились при последнем рукопожатии. На оконечной точке IPsec вывод состояния обычно печатает выбранное предложение, включая группу MODP.

Зафиксируйте эту строку до и после изменения политики и сохраните обе в журнале изменений. Сравнение и есть доказательство.

ipsec statusall | grep -Ei "proposal|ESP|IKE"
openssl dhparam -in /etc/vpn/dh3072.pem -check -noout

Если после изменения состояние всё ещё показывает старую группу, соединение не пересогласовало параметры, и правка конфигурации ничего не доказала. Перезапустите партнёра или очистите ассоциацию безопасности, затем снова прочитайте состояние. Политика, применяемая только к новым соединениям, оставит долгоживущие туннели на старых параметрах, пока они подняты.

Проверяйте группу и личность партнёра раздельно

Отделите то, что защищает группа, от того, кто находится на другом конце. Записывайте метод обмена ключами, размер группы и метод аутентификации как три поля, потому что они отказывают независимо. Туннель, согласовавший 3072-битную группу, но принимающий любой сертификат, — не тот же риск, что туннель, закрепляющий партнёра и использующий 2048-битную группу.

Запишите критерии приёмки до начала проверки, чтобы результат был сравнением, а не мнением. Минимальный размер группы для каждой версии протокола, список разрешённых именованных групп и обязательная проверка партнёра достаточны, чтобы сделать решение механическим. Именно неоднозначность этого списка превращает проверку в спор, а споры не исправляются. Тогда вывод — список конечных точек, нарушающих заявленное правило.

ipsec statusall | grep -Ei "peer|auth|cert"
openssl s_client -connect vpn.acme.example:443 -brief -cipher 'DHE-RSA-AES256-GCM-SHA384'

Замкните цикл, перечитав согласованные значения после исправления. Соответствующий файл конфигурации не является доказательством того, что туннель его принял. Доказательство — вывод состояния и одно свежее рукопожатие, и собрать их быстрее, чем провести совещание о том, нужны ли они.

Похожие статьи