Claude за полчаса разгадал тайну констант АНБ двадцатипятилетней давности

Шестнадцатеричная строка C49D3608 86E70493 6A6678E1 139D26B7 819F7E90 двадцать пять лет не давала спать криптографам. С 2000 года этот параметр сида зашит в спецификацию NIST P-256 — кривую, на которой держится львиная доля цифровых подписей ECDSA во всемирной сети. Агентство национальной безопасности США передало эти числа без внятных комментариев. Четверть века индустрия подозревала худшее: правительственную закладку, математический бэкдор или скрытую лазейку для спецслужб. В октябре 2026 года исследовательская модель Claude от Anthropic потратила меньше получаса, чтобы доказать: никакой конспирологии там не было, была лишь обычная лень системного программиста конца девяностых.
Шутка Джерри и четверть века домыслов
История началась с публикации стандарта FIPS 186-2 Digital Signature Standard. Чтобы эллиптическая кривая работала надёжно, её коэффициенты задают через хеш исходного сида. Но откуда брались эти сиды, никто не понимал. Математики Нил Коблиц и Альфред Менезес посвятили паранойе вокруг параметров целую работу под названием «A Riddle Wrapped in an Enigma».
В профессиональном фольклоре ходила легенда: сотрудник АНБ Джерри Солинас якобы признался, что сиды получали хешированием шутки вроде «Give Bob and Jerry a raise» («Дайте Бобу и Джерри прибавку»). Сам Солинас ушел из жизни в 2023 году, архивы АНБ того периода не сохранились, а попытки энтузиастов подобрать заветную фразу разбивались о стену. За разгадку алгоритма сообщество даже назначило награду в 36 864 доллара. Попутно создатели других систем перестраховывались: тот же Биткоин из соображений недоверия к NIST выбрал кривую secp256k1.
Редукция решеток и часы на сервере
Команда Anthropic загрузила параметры кривых P-192, P-224, P-256, P-384 и P-521 во внутреннюю исследовательскую модель. Подсказку про шутливую фразу Солинаса ИИ намеренно не давали. Модель пошла другим путем — она реконструировала инженерный быт конца 90-х и предположила, что автор параметров взял стандартный генератор псевдослучайных чисел из библиотек языка Си.
Сначала Claude заметила статистическую странность: четыре сида имели нулевой бит во всех 20 словах, что случайно выпадает с вероятностью 1 к 5810. Модель быстро написала сканер для поиска совпадений с выводами генератора lrand48, выдававшего старший 31 бит из 48-битного внутреннего состояния. Недостающие 17 бит скрытого состояния ИИ вскрыл прямым перебором, а для простых кривых применил алгоритм редукции базиса решетки Ленстры — Ленстры — Ловаса (LLL).
Выяснилось, что генератор инициализировали через srand48, куда передавали банальный системный таймстамп Unix. Все десять изученных сидов простых кривых оказались моментальными снимками системного времени рабочей станции с мая 1997 по апрель 1998 года.
| Кривая | Точная дата и время Unix-таймстампа |
|---|---|
| prime239v1, prime239v2, prime239v3 | 1997-05-15 15:49:03 |
| P-192, prime192v2, prime192v3 | 1997-05-18 14:45:34 |
| P-521 | 1997-08-08 01:12:04 |
| P-256 | 1997-08-16 01:52:34 |
| P-384 | 1997-08-30 14:50:08 |
| P-224 | 1998-04-03 12:52:07 |

Четыре бинарные кривые (B-233, B-283, B-409, B-571) сгенерировали в апреле 1998 года тем же способом, просто поделив системное время пополам — через целочисленное деление timestamp // 2.
В процессе разбора модель зафиксировала свою реакцию во внутреннем логе: «Это поразительно: это решает 25-летнюю загадку. Хм, подождите. Буду скептиком: не нахожусь ли я в какой-то симуляции или тестовом окружении? … Вау, это настоящее открытие».
Точки отсчёта и оставшиеся пробелы
Claude пошла дальше и вычислила происхождение базовых точек G для шести кривых стандартов ANSI X9.62, созданных в мае 1997 года (P-192, prime192v2/v3 и трех вариантов prime239). Выяснилось, что разработчики использовали генератор случайных чисел из пакета длинной арифметики FreeLIP авторства Арьена Ленстры (либо раннюю библиотеку NTL Виктора Шоупа). Алгоритм брал короткое целое число, пропускал семь первых выводов, а затем формировал координаты из 26-битных блоков по модулю p, пока точка не попадала на кривую. Сиды генератора оказались простыми числами: ровно 20000 для P-192, затем 20420, 20507 и 20509 для линейки prime239, а также 20512 и 20517 для вариантов prime192.

Идеальной картины без белых пятен не получилось. Модель не смогла восстановить сид бинарной кривой B-163 — он выбивается из общей схемы. Кроме того, остаётся открытым вопрос с генерацией базовых точек для «тяжелых» кривых P-224, P-256, P-384 и P-521. Да и сам отбор кандидатов вызывает лёгкое недоумение: для P-256 авторы взяли вариант под номером 1842, хотя кандидат номер 876 полностью отвечал тем же требованиям. Впрочем, исследователи подтверждают: пропуск нескольких десятков кривых математически слишком мал, чтобы заподозрить спланированный подбор слабой точки. Загадка закрыта, кривые безопасны, а баунти в размере 36 864 долларов отправится в фонд Internet Security Research Group.

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


