Anthropic zufolge half eine Forschungsversion von Claude dem Kryptografieteam des Unternehmens dabei, die Herkunft mehrerer veröffentlichter Seeds elliptischer Kurven zu rekonstruieren. Der Bericht vom 16. Oktober führt fünf Seeds von NIST-Primkörperkurven und vier Seeds von NIST-Binärkurven auf Ausgaben von lrand48 zurück, einem älteren C-Pseudozufallszahlengenerator, der mit von der Uhr abgeleiteten Werten initialisiert wurde. Der Bericht enthält außerdem Code, der die angegebenen Seeds ausgibt und ausgewählte Basispunktkoordinaten reproduziert.

Das Ergebnis behandelt eine Frage zur Geschichte standardisierter Parameter. Anthropic meldet weder einen neuen Angriff noch einen kryptografischen Bruch. Die Rekonstruktion lässt zudem einige Entscheidungen offen, darunter, warum bestimmte geeignete Kurvenkandidaten übersprungen wurden.

Die große Veränderung

  • Was sich geändert hat: Anthropic veröffentlichte eine konkrete Erzeugungsvorschrift samt Code für die Seeds von NIST P-192, P-224, P-256, P-384 und P-521, vier NIST-Binärkurven sowie fünf ANSI-X9.62-Beispielkurven. Die gesonderte Vorschrift für Basispunkte passt zu P-192 und fünf ANSI-Beispielen.
  • Wie: Das Team berichtet, Claude habe Muster in den veröffentlichten Seed-Bits erkannt, den Generatorzustand rekonstruiert und ihn bis zu Anfangswerten zurückverfolgt, die wie Uhrwerte aussehen. Für sechs Basispunkte identifizierte es einen Generator aus älterer Langzahlarithmetik-Software.
  • Grenze: Der Code macht die vorgeschlagenen Übereinstimmungen überprüfbar. Eine passende Vorschrift dokumentiert jedoch nicht jede historische Auswahlentscheidung und belegt auch nicht die Sicherheit der Kurven. BIG CHANGE prüfte den öffentlichen Beitrag und den historischen Standard; eine unabhängige Reproduktion wurde nicht durchgeführt.

Was ein Kurven-Seed erklärt

NISTs archivierter FIPS 186-2 vom 27. Januar 2000 führt für jede seiner fünf Primkörperkurven einen 160-Bit-Seed auf. Ein festgelegtes SHA-1-basiertes Verfahren wandelt den Seed in einen Kurvenkoeffizienten um. Der Standard nennt Körper, Kurvenordnung und Basispunktkoordinaten außerdem gesondert. Demnach ermöglicht der bereitgestellte Seed zu prüfen, ob der Koeffizient dem vorgeschriebenen Verfahren folgt; wie der Seed selbst ausgewählt wurde, beschreibt er nicht. Auch den Basispunkt bestimmt der Seed nicht: den festen Punkt, aus dem öffentliche Schlüssel gebildet werden.

Dieser Unterschied bestimmt die Reichweite von Anthropics Ergebnis. Die Rückverfolgung eines Seeds kann eine Eingangsgröße der standardisierten Kurve erklären. Für den Basispunkt ist eine weitere Erklärung nötig. Eine passende Ausgabe kann nicht jede Entscheidung der Personen offenlegen, die die Parameter auswählten.

Wie Anthropic die Seeds zurückverfolgte

Anthropic zufolge suchte Claude zunächst in den veröffentlichten Werten nach Spuren älterer C-Pseudozufallszahlengeneratoren. Bei einigen Binärkurven-Seeds war in jedem 32-Bit-Wort das höchstwertige Bit null. Laut Anthropic führte dieses Muster zu lrand48, das 31 Bit aus einem internen 48-Bit-Zustand zurückgibt. Anschließend rekonstruierte das Modell mögliche Zustände und prüfte, ob aufeinanderfolgende Ausgaben zu den Seeds passten. Bei Primkörperkurven waren von jeder Ausgabe weniger Bits erhalten, weshalb Claude laut Anthropic ein Gitterverfahren zur Rekonstruktion des verborgenen Zustands einsetzte.

Der Code in Anthropics Beitrag beginnt mit einem Zustand nach Art von srand48, führt die Rekurrenz von lrand48 fort und gibt 20 Byte lange Seed-Kandidaten aus. Die Tabelle nennt Zeitstempel und Kandidatennummern für P-192, P-224, P-256, P-384 und P-521 sowie für die ANSI-Beispiele prime192v2, prime192v3 und prime239v1 bis prime239v3. Bei P-256 erreicht der angegebene Durchlauf den veröffentlichten Seed beim Kandidaten 1.842. Der in Anthropics Beispiel ausgegebene P-256-Wert stimmt mit dem Seed in FIPS 186-2 überein.

Anthropic berichtet über eine verwandte Übereinstimmung bei B-233, B-283, B-409 und B-571. Der Code verwendet vor der Initialisierung des Generators einen durch zwei geteilten Uhrwert. Anthropic beschreibt diese Halbierung des Uhrwerts als mögliche Deutung: Die Rückverfolgung des rekonstruierten Zustands ergab Daten im Februar 1984; verdoppelte Werte entsprechen dagegen dem 17. April 1998. Die veröffentlichte Übereinstimmung stützt die Erzeugungsvorschrift, belegt aber nicht, für welche Behandlung der Uhrwerte sich die ursprünglichen Autoren entschieden.

Anthropic beschreibt die Arbeit als Zusammenspiel aus der Frage eines Mitarbeiters, Suche und Code des internen Forschungsmodells sowie Prüfungen durch das Team. Der Bericht enthält Code und Beispielausgaben, die andere untersuchen können. Wir fanden keine unabhängige Reproduktion, auf die wir für diesen Artikel verweisen könnten; BIG CHANGE führte den Code nicht aus. Die Quelle stützt daher die Darstellung als von Anthropic berichtete Rekonstruktion. Die historischen NIST-Werte dienen dabei als externe Aufzeichnung der Zielparameter.

Sechs Basispunkte und die verbleibenden Lücken

Ein anderer alter Generator aus Arjen Lenstras Langzahlpaket FreeLIP und frühen Versionen von Victor Shoups NTL passt laut Anthropic zu den x-Koordinaten der Basispunkte von P-192 und fünf ANSI-Beispielen. Die zweite Codeliste initialisiert diesen Generator mit kleinen ganzen Zahlen, verwirft sieben Ausgaben und zieht anschließend x-Koordinaten-Kandidaten, bis einer auf der Kurve liegt. Die sechs Beispiele sind P-192, prime192v2, prime192v3 und prime239v1 bis prime239v3. Anthropic gibt für jede veröffentlichte x-Koordinate eine Übereinstimmung aus. NISTs historische P-192-Aufstellung liefert den für diesen Vergleich verwendeten Wert.

Auch Anthropics eigene Darstellung lässt mehrere Grenzen offen. Der B-163-Seed ließ sich nicht rekonstruieren. Die Basispunkte von P-224, P-256, P-384 und P-521 sowie der NIST-Binärkurven wurden nicht erklärt. Die Durchläufe übersprangen außerdem Kandidaten, die laut Anthropic die genannten Bedingungen für Größe und Primzahlordnung erfüllt hätten. Ein Beispiel ist P-256-Kandidat 876 vor dem veröffentlichten Kandidaten 1.842. Anthropic meldet drei übersprungene geeignete Kandidaten im P-224-Durchlauf und insgesamt sieben in zwei ANSI-Beispieldurchläufen. Das Team kennt weder das Auswahlkriterium noch weiß es, ob diese Auslassungen ein Artefakt waren.

Für Sicherheitsingenieure ist das nützliche neue Ergebnis eine überprüfbare Darstellung des mutmaßlichen Erzeugungswegs vieler Parameterwerte. Es grenzt eine langjährige Frage zu undurchsichtigen Seeds ein, ohne alle Fragen zur Kurvenauswahl zu beantworten. Anthropic selbst sagt, der Befund sei kein Grund für Nutzer, ihre kryptografische Praxis zu ändern.

Quellen und weiterführende Literatur