Trusting the Null: Positive-Control Fuzzing of Post-Quantum Decode and Verify Paths in Java
Diese Arbeit zeigt auf, dass eine groß angelegte Fuzzing-Kampagne zwar keine Defekte in den Post-Quanten-Decode- und Verify-Pfaden von Bouncy Castle 1.85 fand, ein Positivkontroll-Ansatz jedoch die Testumgebung erfolgreich validierte, indem er kritische Fehler bei der Längenvalidierung sowohl in Bouncy Castle 1.84 als auch in mehreren JDK-Releases aufdeckte, was offenbarte, dass sich diese Implementierungen lediglich im Zeitpunkt ihrer Prüfungen, nicht aber in der Logik ihrer Entscheidungen unterscheiden.
Originalarbeit lizenziert unter CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
In der unsichtbaren Architektur des Internets schützt ein riesiges System aus digitalen Schlössern und Schlüsseln alles – von Bankkonten bis hin zu privaten Nachrichten. Jahrzehntelang verließen sich diese Schlösser auf mathematische Probleme, die zwar leicht zu erstellen, aber selbst für die leistungsstärksten Computer nahezu unmöglich zu lösen waren. Wissenschaftler haben jedoch schon lange vorhergesagt, dass eine neue Art von Computer, die nach den seltsamen Regeln der Quantenphysik arbeitet, eines Tages eintreffen wird. Wenn dies geschieht, wird er in der Lage sein, diese alten Schlösser in Sekundenschnelle zu knacken. Um sich auf diese Zukunft vorzubereeren, führen Forscher nun eine neue Generation digitaler Schlösser ein, die auf anderen mathematischen Strukturen basieren, die Quantencomputer nicht ohne Weiteres knacken können. Diese neuen Systeme werden von Regierungen und großen Technologieunternehmen übernommen, um das Internet für die kommenden Jahrzehnte abzusichern.
Der kritischste Moment in diesem neuen Sicherheitssystem findet statt, wenn ein Computer zum allerersten Mal eine Nachricht empfängt. Bevor er prüfen kann, ob eine Nachricht echt ist oder ein Geheimnis entschlüsselt, muss er zuerst einen Strom von Rohdaten in einen nutzbaren Schlüssel oder eine Signatur übersetzen. Dieser Übersetzungsschritt ist die Eingangstür des Systems. Wenn die Tür schlecht gebaut ist, muss ein Angreifer das Schloss nicht einmal brechen; er muss lediglich ein Objekt mit der falschen Form gegen den Griff drücken. Wenn die Tür ein missformtes Objekt akzeptiert, kann das gesamte System abstürzen, hängen bleiben oder Schlimmeres: es könnte dazu verleitet werden, einen gefälschten Schlüssel zu akzeptieren. Sicherzustellen, dass diese Eingangstüren jede mögliche schlechte Form abweisen, ist genauso wichtig, wie die Schlösser selbst unknackbar zu machen.
Eine aktuelle Studie des unabhängigen Forschers Arpan Sharma konzentrierte sich genau auf diese Eingangstür der neuen quantenresistenten Systeme, speziell innerhalb der Programmiersprache Java, die einen riesigen Teil der weltweiten Software ausmacht. Der Forscher testete zwei bedeutende Implementierungen dieser neuen Standards: eine, die von einer weit verbreiteten Sicherheitsbibliothek namens Bouncy Castle bereitgestellt wird, und eine andere, die direkt in die Java-Plattform eingebaut ist. Das Ziel war nicht zu sehen, ob die Mathematik bei perfekten Daten korrekt funktioniert, sondern zu sehen, was passiert, wenn die Software mit Millionen von zufälligen, fehlerhaften und feindseligen Eingaben gefüttert wird. Der Forscher wollte wissen, ob die Software diese schlechten Eingaben durch eine saubere Ablehnung handhaben würde oder ob sie stolpern, abstürzen oder stillschweigend einen gefährlichen Fehler akzeptieren würde.
Um dies zu tun, baute der Forscher eine Testmaschine, die wie ein unermüdlicher, automatisierter Angreifer agierte. Sie generierte 900.000 verschiedene Variationen von Daten, die von leicht veränderten Versionen gültiger Schlüssel bis hin zu völlig sinnlosen Byte-Strömen reichten, und fütterte sie in die Software. Die Maschine beobachtete genau, wie die Software reagierte. Sie suchte nach jedem Anzeichen eines Absturzes, jeder unerwarteten Fehlermeldung, die die Software eigentlich nicht zeigen sollte, oder jedem Fall, in dem die Software einen schlechten Schlüssel als gut akzeptierte. Die Ergebnisse für die aktuelle Version der Bouncy Castle Library waren bemerkenswert sauber. Von den 900.000 Versuchen lehnte die Software jeden einzelnen missformten Input exakt so ab, wie sie es sollte, ohne unerwartete Fehler auszugeben oder einen schlechten Schlüssel zu akzeptieren.
In der wissenschaftlichen Testung ist ein Ergebnis, das besagt, dass „nichts schiefgelaufen ist“, jedoch oft schwer zu vertrauen. Es ist möglich, dass die Testmaschine selbst zu unbeholfen war, um ein Problem zu finden, oder dass die Software einfach nur Glück hatte. Um zu beweisen, dass der Test tatsächlich in der Lage war, einen Fehler zu finden, nutzte der Forscher einen klugen Trick, eine sogenannte positive Kontrolle. Er ließ dieselbe Testmaschine gegen eine ältere Version der Bouncy Castle Software laufen, die für einen spezifischen, realen Fehler bekannt war. In Sekundenschnelle fand die Maschine den Defekt. Sie entdeckte, dass die ältere Software einen öffentlichen Schlüssel der falschen Größe akzeptieren würde – ein Fehler, der später im Prozess zu einem Absturz führen könnte. Da die Maschine ein bekanntes Problem in der alten Version erfolgreich fand, wurde die Tatsache, dass sie in der neuen Version nichts fand, zu einer vertrauenswürdigen Bestätigung dafür, dass die neue Software tatsächlich robust ist.
Als der Forscher denselben strengen Test auf den neuen quantenresistenten Code anwandte, der direkt in die Java-Plattform eingebaut ist, zeigten die Ergebnisse eine andere Art von Problem auf. Die Java-Software stürzte nicht ab und akzeptierte keine gefälschte Signatur, was das gefährlichste Ergebnis wäre. Stattdessen zeigte sie einen subtilen Unterschied darin, wie sie mit schlechten Daten umging. Das Java-System akzeptierte einen öffentlichen Schlüssel jeglicher Länge, selbst wenn dieser leer oder viel zu kurz war, ohne im Moment des Eingangs Alarm zu schlagen. Es prüfte die Größe des Schlüssels erst später, wenn der Schlüssel tatsächlich zur Ausführung einer Aufgabe verwendet wurde. Wenn der Schlüssel zu klein war, stoppte das System dann und meldete einen Fehler. Obwohl dies letztlich eine Katastrophe verhinderte, bedeutete es, dass die Software einen defekten Schlüssel für eine kurze Zeit lang behalten und als gültig behandelt hatte.
Dieses Verhalten war über drei verschiedene Versionen der Java-Plattform hinweg konsistent. Die Software traf am Ende dieselbe Entscheidung wie die Bouncy Castle Library: Sie lehnte den schlechten Schlüssel ab. Der Unterschied lag rein im Timing. Die Bouncy Castle Library prüfte die Größe sofort beim Empfang des Schlüssels und lehnte ihn direkt ab. Die Java-Plattform akzeptierte den Schlüssel zuerst, speicherte ihn und lehnte ihn erst ab, als sie ihn benutzen wollte. Diese Unterscheidung ist wichtig, denn sie zeigt, dass beide Systeme zwar vor unmittelbaren Abstürzen sicher sind, aber die Regeln für den Eingang unterschiedlich handhaben. Die Studie verdeutlichte zudem eine allgemeinere Lektion für jeden, der diese Art von komplexer Software testet: Manchmal tritt ein Fehler erst auf, wenn zwei verschiedene Teile eines Systems interagieren, wie etwa eine gültige Signatur gepaart mit einem schlechten Schlüssel. Das Testen der Teile isoliert vone von sich oft verborgene Gefahren übersehen.
Die Forschung deckte auch ein verstecktes Hindernis im Testprozess selbst auf. Das Computersystem, auf dem die Tests laufen, verfügt über eine eingebaute Funktion, die Operationen beschleunigen soll, indem sie Fehlermeldungen vereinfacht, wenn derselbe Fehler immer wieder auftritt. In einem massiven Test mit Hunderttausenden von Eingaben würde diese Funktion die Details der Fehler stillschweigend entfernen, was es der Testmaschine unmöglich machen würde, zu unterscheiden, ob ein Absturz ein echter, unerwarteter Fehler oder ein bekanntes Problem war. Der Forscher musste diese Funktion manuell deaktivieren, um sicherzustellen, dass die Testergebnisse korrekt waren. Dieser Befund legt nahe, dass für die groß angelegte Sicherheitsprüfung moderner Software Standardeinstellungen manchmal genau die Probleme verbergen können, die Forscher eigentlich finden wollen.
Letztendlich liefert diese Studie ein klares und verifiziertes Bild davon, wie sich die neuen quantenresistenten Schlösser in der Praxis verhalten. Die aktuelle Version der Bouncy Castle Library scheint äußerst belastbar zu sein, da sie schlechte Eingaben sofort und konsistent ablehnt. Die Java-Plattform ist ebenfalls sicher, nimmt jedoch einen etwas anderen Weg, indem sie schlechte Schlüssel für einen Moment hält, bevor sie sie ablehnt. Durch die Verwendung einer positiven Kontrolle zur Validierung der Testmethode stellte der Forscher sicher, dass das Ergebnis „nichts gefunden“ in der neuen Software ein echtes Zeichen der Stärke war und nicht ein Versagen des Tests. Während sich das Internet auf den Wechsel zu diesen neuen Sicherheitsstandards vorbereitet, ist diese Art der detaillierten, unter Stress geprüften Gewissheit unerlässlich, um sicherzustellen, dass die neuen Türen gebaut sind, um dem Druck einer feindseligen Welt standzuhalten.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.