Przejdź do treści

Claude rozwiązał zagadkę krzywych eliptycznych NIST. Seedy ECDSA to znaczniki czasu z 1997 i 1998 roku

Karta z nagłówkiem seedy krzywych NIST: zagadka z 1997 roku, chipami P-256 i ECDSA, liczbą kandydat nr 1842 z 16.08.1997 i nagrodą 36 864 USD oraz pomarańczową pieczątką wyjaśnione, obraz wyróżniający tekstu o rozwiązaniu zagadki seedów ECDSA przez Claude

16 października 2026 Anthropic opublikował na blogu badawczym rozwiązanie zagadki liczącej ćwierć wieku: skąd się wzięły seedy standardowych krzywych eliptycznych NIST, na których opiera się podpis ECDSA. Model Claude, poproszony przez pracownika firmy bez podpowiedzi, doszedł do odpowiedzi w niecałe pół godziny. Seedy nie są hashami tajnego hasła, jak utrzymywała legenda z ostatnich lat. To wyjścia generatora lrand48 z biblioteki C, zasianego znacznikami czasu Unixa z przełomu 1997 i 1998 roku. Uruchomiłem kod z posta i seed krzywej P-256 wyszedł co do znaku, więc to odtwarzalny wynik, nie deklaracja. O modelach piszemy szeroko w hubie Claude, tu idzie o odkrycie.

Najważniejsze informacje

CoSzczegóły
PublikacjaAnthropic, blog badawczy, 16 października 2026
Rozwiązany problempochodzenie seedów 10 krzywych: 5 NIST (P-192 do P-521) i 5 przykładów z ANSI X9.62
Mechanizmgenerator lrand48 z biblioteki C, zasiany znacznikiem czasu Unixa
Przykładseed P-256 to kandydat nr 1842 z uruchomienia z 16 sierpnia 1997, 01:52:34 UTC
Krzywe binarneB-233, B-283, B-409 i B-571 z 17 kwietnia 1998, zegar najwyraźniej dzielony przez 2
Bonus6 punktów bazowych (m.in. P-192) z generatora biblioteki FreeLIP
Nagroda36 864 USD przekazane Internet Security Research Group
Bezpieczeństwobez zmian: to nie jest łamanie kryptografii ani nowy atak

Co dokładnie wyjaśniono

Krzywe z rodziny P-192 do P-521 trafiły do standardu NIST FIPS 186-2 w 2000 roku, a ich rodowód sięga specyfikacji ANSI X9.62 z 1999. Każda ma parametr zwany seedem: 160-bitowy ciąg, którego hash definiuje część parametrów krzywej. Konstrukcja miała dawać parametry bez ukrytych intencji, tzw. liczby „nothing up my sleeve”. Tyle że samych seedów nikt nie umiał odtworzyć. Dostarczył je NSA, specyfikacje nie tłumaczyły nic, a pytanie padło na Usenecie niemal od razu po publikacji w 1999 roku, jak przypomina Stephen Weis, inżynier bezpieczeństwa, który w 2023 roku zebrał tę historię.

Post Anthropic pokazuje, że każdy seed to 20 bajtów z generatora lrand48, uruchomionego znacznikiem czasu. Kandydaci szli po kolei. Seed P-256 to kandydat numer 1842 z uruchomienia z 16 sierpnia 1997 o 01:52:34 UTC. Wszystkie dziesięć seedów krzywych nad ciałami liczb pierwszych wychodzi z uruchomień między majem 1997 a kwietniem 1998. Cztery krzywe binarne, B-233, B-283, B-409 i B-571, pochodzą z uruchomień z 17 kwietnia 1998, przy czym kod najwyraźniej dzielił odczyt zegara przez dwa: odzyskane stany czytane wprost jako czas dają luty 1984, a po podwojeniu wskazują dokładnie 17 kwietnia 1998. Kod z posta jest krótki i publiczny; wpuściłem go lokalnie i wszystkie pięć seedów NIST wyszło identycznie ze standardem.

Gdzie te krzywe żyją na co dzień

P-256 i P-384 stoją za certyfikatami X.509 podpisanymi ECDSA, częścią szyfrowanej sieci. Filippo Valsorda, fundator nagrody za rozwiązanie zagadki, pisze wprost, że te krzywe zabezpieczają większość sieci i wchodzą w skład Commercial National Security Algorithm Suite. Handshake TLS, podpis serwera, aktualizacje systemu, aplikacje bankowe: dotykamy tych parametrów kilkadziesiąt razy dziennie, o tym nie wiedząc.

Na marginesie: Bitcoin używa krzywej secp256k1 ze standardu SECG, żadnej z krzywych NIST, więc ta historia nie dotyczy portfeli kryptowalut.

Dlaczego przez ćwierć wieku podejrzewano backdoor

Seedy dostarczone przez NSA bez słowa wyjaśnienia to idealna pożywka dla teorii. Najlepsza krążyła od 2015 roku: Jerry Solinas, pracownik NSA, miał wygenerować seedy hashowaniem żartobliwego hasła w stylu „Give Bob and Jerry a raise”, po czym zapomniał brzmienia. Gdy kontrowersja wybuchła, próbował wszystkich fraz z pamięci i żadna nie pasowała. Solinas zmarł na początku 2023 roku, a w mailach z 2015 roku do Daniela Bernsteina pisał, że archiwa, jeśli gdzieś istnieją, „siedzą na dysku obok Arki Przymierza”. Filippo Valsorda ogłosił 5 października 2023 nagrodę 12 288 USD za złamanie tych pięciu hashy, z opcją potrójnej wypłaty 36 864 USD na cel charytatywny.

Nieufność nakręcało Dual_EC_DRBG: generator liczb losowych ze standardu NIST SP 800-90A z około czerwca 2006, mimo zastrzeżeń kryptografów. W sierpniu 2007 Dan Shumow i Niels Ferguson pokazali, że konstrukcja dopuszcza tylne wejście dla tego, kto zna ukrytą relację między stałymi. We wrześniu 2013 New York Times, na podstawie dokumentów Snowdena, opisał program Bullrun, w ramach którego NSA miała wydawać 250 mln USD rocznie na osłabianie standardów, a Reuters pisał o 10 mln USD, które NSA miała zapłacić firmie RSA za uczynienie Dual_EC domyślnym w bibliotece BSAFE. NIST wycofał generator 21 kwietnia 2014. Był i głos przeciwny: jak przypominał w wątku tptacek, nikt obeznany z badaniami nad krzywymi nie traktował podejrzenia o backdoor na serio, a argumenty najpełniej zestawił w 2015 roku duet Neal Koblitz i Alfred Menezes w pracy „A Riddle Wrapped in an Enigma”, którą Weis określa jako znakomite podsumowanie historii i wątpliwości wokół seedów. Mocne opracowanie, ale sprawy nie domykało.

Jak Claude trafił na lrand48

Claude nie szukał zaginionego hasła. Postawił hipotezę, że program z lat dziewięćdziesiątych używał generatora pseudolosowego dołączonego do ówczesnych bibliotek C, a stare generatory są na tyle słabe, że ich wyjścia dają się rozpoznać. Skaner przesuwał się po seedach bit po bicie i sprawdzał, czy fragmenty wyglądają na kolejne wyjścia jednej z 34 kombinacji generatora i przekroju bitów. Sygnał pojawił się w górnych bitach: w czterech z dziesięciu seedów wszystkie najstarsze bity słów były zerami, co zdarza się z prawdopodobieństwem 1/5810. To była sygnatura lrand48, który zwraca tylko 31 starszych bitów ze stanu 48-bitowego.

Stan odzyskiwano brute force, próbując 2^17 wartości ukrytych bitów, a tam, gdzie seedy zachowywały mniej bitów, za obcięty generator liniowy wziął się algorytm redukcji kraty LLL. Generator cofnięto do stanu inicjalizacji srand48, rozpoznawalnego po 0x330E w młodszych 16 bitach; taki stan trafia się raz na 65 536 kroków, więc sam nie jest dowodem. Dowodem jest to, że wszystkie dziesięć inicjalizacji dekodowały się na znaczniki czasu między majem 1997 a kwietniem 1998. Anthropic zacytował też wewnętrzny monolog modelu: „To zdumiewające: rozwiązuje to 25-letnią zagadkę”, po czym chwilę sceptycznej kontroli.

Przy okazji rozwiązano drugą zagadkę: skąd punkty bazowe krzywych, stały punkt, przez który liczony jest każdy klucz publiczny ECDSA. Sześć z nich, w tym P-192 i pięć przykładów z ANSI X9.62 generowanych w maju 1997, wychodzi z generatora biblioteki FreeLIP, pakietu arytmetyki wielkich liczb Arjena Lenstry. Przepis: zasiać generator liczbą typu 20000, wyrzucić siedem pierwszych wyników i kolejne współrzędne x sprawdzać aż trafią na krzywą. Jak piszą autorzy, żadnego punktu bazowego NIST nie wyjaśniono wcześniej.

Co to zmienia, a czego nie zmienia

Anthropic zapisuje to wprost: „This is not a cryptographic break, new attack, or weakness in the ECDSA curves”, czyli to nie jest złamanie kryptografii, nowy atak ani słabość krzywych. Schemat „dobrano parametry pod słabość” traci wiarygodność, a dla użytkownika wniosek jest krótki: nie ma nic do zrobienia, klucze generuje się dziś losowo. Nagroda 36 864 USD pójdzie do Internet Security Research Group, organizacji non-profit stojącej za Let’s Encrypt.

Wątek na Hacker News, ponad 800 punktów w chwili odczytu 17 października (utworzony 16.10), dał szybką ocenę środowiska. Użytkownik tptacek napisał: „To dewastująca wiadomość dla całego pokolenia teorii spiskowych o kryptografii NIST”. Steve Weis, jeden z autorów pracy, podsumował lata podejrzeń żartem „13 lat czapek z folii dla srand48(time(NULL))”, a na pytanie, czemu NIST nigdy nie wyjaśnił sprawy, uznał, że Solinas najpewniej sam nie pamiętał: „gdyby wiedzieli, mogliby podać te znaczniki czasu 15 lat temu i położyć temat”.

Ciekawska od faktu jest druga warstwa: narzędzie. Pracownik Anthropic zapytał wewnętrzny model badawczy bez wskazówek. Model najpierw przypomniał sobie z danych treningowych, że nagroda pozostaje nieodebrana (pisaliśmy o tym w Jak AI się uczy), potem własną pracą doszedł do wyniku i sam go zweryfikował arytmetycznie. Ten schemat opisujemy w tekście czym jest agent AI, a do wieloetapowych zadań badawczych służą środowiska typu Claude Code. Cała „tajemnica” siedziała w dwóch liczbach, które każdy mógł wpisać do kalkulatora.

Co nadal zostaje niewyjaśnione

Punktów bazowych P-224, P-256, P-384, P-521 i krzywych binarnych NIST nie dało się przypisać żadnemu znanemu schematowi. Seed piątej krzywej binarnej, B-163, pasuje do niczego z tego, co Claude próbował. Nie wiadomo też, czemu część nadających się krzywych pominięto: dla P-256 kandydat 876 z tego samego uruchomienia co opublikowany seed (1842) też daje krzywą o rzędzie pierwszym i właściwie dobranych parametrach. Uruchomienie P-224 pominęło trzy takie przypadki, a dwa przebiegi ANSI X9.62 kolejne siedem. Autorzy piszą wprost, że nie znają kryteriów. Mała liczba pominięć sprawia jednak, że teza o celowym wyborze osłabionej krzywej jest ich zdaniem nieprawdopodobna.

Najczęstsze pytania

Czym są krzywe eliptyczne i gdzie ich używam?

Obiekty matematyczne, na których opiera się kryptografia krzywych eliptycznych: te same zabezpieczenia co RSA, ale przy krótszych kluczach. Krzywe NIST z rodziny P, przede wszystkim P-256, siedzą w certyfikatach X.509 i w handshake TLS. Seedy to stałe definiujące krzywą, nie klucze użytkowników.

Czy ECDSA da się teraz złamać?

Nie. Odkrycie nie jest łamaniem kryptografii, nowym atakiem ani słabością krzywych, pisze wprost Anthropic. Wyjaśniono pochodzenie stałych standardu, a to raczej zwiększa zaufanie: parametry wyszły z prostego generatora, który każdy może odtworzyć.

Czym różni się ECDSA od RSA?

RSA opiera się na trudności faktoryzacji dużych liczb, ECDSA na logarytmie dyskretnym w grupie punktów krzywej eliptycznej. ECDSA daje porównywalne bezpieczeństwo przy krótszych kluczach i wyparł RSA z większości nowej sieci.

Czy Bitcoin używa krzywych NIST?

Nie. Bitcoin używa krzywej secp256k1 ze standardu SECG, niezależnej od rodziny P krzywych NIST, więc portfeli kryptowalut ta zagadka nie dotyczy.

Czy AI może teraz łamać kryptografię?

To pojedyncze, dobrze udokumentowane rozwiązanie zagadki analitycznej, nie demo łamania szyfrów. Claude rozpoznał wzorzec starego generatora i odtworzył jego stan znanymi metodami. Rozróżnianie treści AI od ludzkich to osobny temat, omawiamy go w tekście o SynthID.

Co się stało z nagrodą 36 864 USD?

Idzie do Internet Security Research Group, organizacji non-profit stojącej za Let’s Encrypt. Valsorda ustalił tę zasadę już w 2023 roku: 12 288 USD gotówką albo potrójna kwota na cel charytatywny.

Źródła

Powiązane artykuły