Claude менш як за 30 хвилин з’ясував походження seed-значень п’яти кривих NIST. Ці початкові числа NSA надала без пояснень, а NIST включив криві до стандарту цифрового підпису у 2000 році.
У жовтні 2026 року співробітник Anthropic запропонував внутрішній дослідницькій моделі розібратися з їхнім походженням, за даними Anthropic. Раніше працівники компанії безуспішно перевіряли версію про гешування жартівливої фрази. Моделі цієї підказки не дали.
Звідки взялися загадкові числа?
Seed-значення кривих NIST P-192, P-224, P-256, P-384 і P-521 походять із генератора псевдовипадкових чисел lrand48 бібліотеки C. Його ініціалізували Unix-часом — числовою часовою міткою між травнем 1997 і квітнем 1998 року.
Програма брала з генератора по 20 байтів як чергового кандидата на seed. Для P-256 опубліковане значення з’явилося на 1 842-й ітерації. Claude також відтворив п’ять seed-значень зі стандарту ANSI X9.62.
Винагороду в $36 864 Anthropic передає Internet Security Research Group, за даними The Decoder.
Як Claude знайшов генератор?
Claude припустив, що автори програми використовували генератор із бібліотек C 1990-х років, і почав шукати його характерні сліди.
Модель написала сканер, який перевіряв фрагменти опублікованих seed-значень. Він перебрав 34 комбінації генераторів і способів виділення їхніх вихідних бітів.
Підказкою стали нулі на початку слів. Кожне seed-значення можна записати як п’ять 32-бітних слів. У чотирьох із десяти перевірених seed старший біт кожного слова дорівнював нулю — тобто у всіх 20 словах цих чотирьох seed. Це відповідало особливості lrand48: генератор повертає 31 біт свого 48-бітного внутрішнього стану.
Для цих чотирьох seed модель перебрала можливі значення прихованих бітів і перевірила наступні виходи генератора. Для кривих над простими полями завдання було складнішим: seed містили менше бітів кожного виходу. Claude застосував алгоритм LLL, який дав змогу відновити стан генератора за такими неповними даними.
Після цього модель обчислювала стани генератора у зворотному напрямку, шукаючи початковий стан функції srand48. Для всіх десяти seed кривих над простими полями знайдені значення відповідали часовим міткам між травнем 1997 і квітнем 1998 року.
Для чотирьох кривих над бінарними полями результат потребує обережнішого пояснення. Відновлені мітки відповідали лютому 1984 року, а після подвоєння — 17 квітня 1998 року. Anthropic припускає, що програма могла ділити значення часу навпіл.
Чи доводить знахідка відсутність бекдора?
Знахідка робить навмисний бекдор менш правдоподібним, за оцінкою Anthropic, але залишає питання щодо вибору параметрів.
Тепер будь-хто може відтворити послідовність, яка дала опубліковані числа. Водночас дослідники досі не пояснили, чому програма пропускала частину придатних кандидатів і як вибирали інші елементи кривих, за даними CoinDesk. Отже, відтворення seed пояснює їхнє походження, але не весь процес вибору кривих.
Anthropic наголошує: це не криптографічний злам, нова атака чи виявлена слабкість ECDSA. Користувачам досліджених кривих NIST не потрібно нічого змінювати.
Bitcoin використовує іншу криву — secp256k1, тому дослідження не стосується походження її параметрів. CoinDesk також відокремлює цю знахідку від потенційної загрози квантових комп’ютерів: пояснення походження seed її не усуває.
Що перевірити в коді генерування приватних ключів?
Розробникам варто перевірити, чи код генерування приватних ключів використовує lrand48 після ініціалізації srand48 часовою міткою. Це редакційна рекомендація з огляду на описаний CoinDesk ризик, а не вимога змінювати криві NIST.
Конкретна перевірка — знайти виклики srand48 і lrand48, з’ясувати джерело значення для ініціалізації та простежити, чи потрапляє вихід генератора до приватного ключа. CoinDesk пояснює: такий ключ можна відтворити, якщо приблизно знати час його створення.
У дослідженні Claude відновив публічні seed-значення, які були відкритими від початку. Їхня передбачуваність не розкриває приватних ключів користувачів.



