Claude раскрыла происхождение загадочных чисел в криптографическом стандарте Nist

4 минут чтения

Claude раскрыла происхождение загадочных чисел в стандарте криптографии NIST

Более 25 лет криптографы пытались выяснить, откуда взялись числа, использованные при создании популярных эллиптических кривых NIST. Согласно описанию исследования Anthropic, внутренняя модель Claude нашла объяснение менее чем за полчаса: исходными данными, вероятно, были показания системных часов, а сами числа сгенерировал стандартный псевдослучайный генератор.

В 2000 году Национальный институт стандартов и технологий США (NIST) утвердил набор эллиптических кривых с параметрами от P-192 до P-521. Одна из них, P-256, широко применяется в цифровых подписях, сертификатах сайтов, системах авторизации и защищенных устройствах. Однако происхождение части параметров оставалось неясным: Агентство национальной безопасности США передало NIST так называемые начальные значения - "семена" - без подробного объяснения, как именно они были получены.

Такая непрозрачность вызывала вопросы. В криптографии важно убедиться, что параметры не подбирались намеренно, чтобы создать скрытую уязвимость. Для этого обычно используют проверяемый источник случайности: например, открытые данные пропускают через хеш-функцию, а затем публикуют весь процесс. В случае с кривыми NIST убедительного публичного объяснения не было.

Подозрения усилились после разоблачений Эдварда Сноудена и скандала вокруг генератора Dual_EC_DRBG. Его заподозрили в наличии криптографической закладки, связанной с АНБ, после чего NIST исключил его из рекомендаций. На этом фоне необъясненные числа в параметрах кривых казались особенно тревожными.

Существовала и более безобидная версия: семена могли быть получены из шуточной фразы. В 2015 году сотрудник АНБ Джерри Солинас, участвовавший в разработке, вспоминал вариант "Give Bob and Jerry a raise" - "Поднимите Бобу и Джерри зарплату". Бобом был его коллега Боб Райтер, написавший код. Однако Солинас не мог найти старые записи, а позднее признал, что документация могла не сохраниться.

Попытки восстановить происхождение чисел продолжались годами. В 2018-м исследователь Стив Вейс запрашивал документы через официальные процедуры: NIST сообщил, что нужных материалов у него нет, а от АНБ он их не получил. После смерти Солинаса в 2023 году криптограф Филиппо Вальсорда объявил денежную награду за разгадку. По описанию, он подтвердил правильность результата Claude.

Исследователи Anthropic ранее тоже пытались подобрать предполагаемую фразу, но без успеха. На этот раз модели не сообщили о версии с шутливым текстом. Вместо этого Claude предположила, что авторы могли воспользоваться обычным генератором псевдослучайных чисел из библиотек языка C. Модель подготовила программу, проверявшую 34 сочетания генераторов и способов обработки их выхода.

Ключевой зацепкой стало распределение битов. В четырех из десяти семян старший бит каждого из пяти 32-битных слов равен нулю. Все эти значения относятся к двоичным кривым. Такой рисунок можно заметить в опубликованных данных, хотя без понимания его значения он легко остается незамеченным. По расчетам Anthropic, вероятность случайно увидеть подобную особенность как минимум у четырех семян - примерно один случай на 5810.

Нулевой старший бит оказался характерен для lrand48 - генератора из семейства POSIX drand48. Он использует 48-битное внутреннее состояние, но наружу выдает только 31 старший бит. Вальсорда ранее исключил эти четыре семени из условий своей награды, однако отдельно призывал исследовать их: характерная структура могла подсказать, каким инструментом пользовались создатели параметров.

С остальными числами было сложнее. Их создатели, по версии исследования, использовали лишь часть вывода генератора, поэтому очевидный битовый рисунок в них отсутствовал. Тем не менее фрагментов хватило, чтобы восстановить последовательность работы алгоритма. Claude применила математический метод для поиска состояния генератора, а затем прокрутила последовательность назад - к числу, с которого начался расчет.

После этого модель проверила, не было ли стартовым значением время. В компьютерных системах его часто записывают как количество секунд, прошедших с начала 1970 года. Полученные значения соответствовали датам конца 1990-х - периоду подготовки стандарта. Запуск того же генератора с найденными временными отметками воспроизвел опубликованные семена до последнего байта. Таким образом, объяснение не требовало ни утраченной шутки, ни секретного ключа: исходные значения, вероятно, задавались системными часами.

Почему такая находка важна

Воспроизведение чисел не означает, что в кривых обнаружена уязвимость. Оно объясняет, как могли появиться параметры, но само по себе не доказывает ни злой умысел, ни абсолютную безопасность стандарта. Это разные вопросы: сначала устанавливают происхождение данных, затем отдельно анализируют, позволяют ли они предсказать секретные ключи или повлиять на криптографические операции.

Если версия верна, использование времени как начального значения было не лучшим способом обеспечить проверяемость. Системные часы - не прозрачный публичный источник случайности: сторонний наблюдатель не обязательно может точно воспроизвести условия, а отсутствие документации спустя десятилетия создает почву для подозрений. При этом совпадение вычисленного результата с опубликованными числами дает проверяемое объяснение того, как могли быть получены семена.

История также показывает, насколько полезен анализ структуры данных. Исследователям не потребовался доступ к архивам АНБ или исходному коду 1990-х годов: зацепка находилась в самих опубликованных параметрах. Модель ускорила перебор гипотез и помогла связать битовый рисунок с конкретным генератором, но надежность вывода все равно зависит от того, можно ли независимо повторить вычисления.

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

Разгадка, если изложенные результаты подтвердятся, закрывает одну из самых заметных загадок вокруг кривых NIST. Но более широкий урок касается не искусственного интеллекта, а инженерной практики: решения, кажущиеся очевидными разработчикам в момент работы, спустя годы могут стать невосстановимыми. Документирование процесса - такая же часть безопасности, как выбор алгоритма и проверка его математических свойств.

Прокрутить вверх