Trusting the Null: Positive-Control Fuzzing of Post-Quantum Decode and Verify Paths in Java
Dit artikel toont aan dat hoewel een grootschalige fuzzing-campagne geen defecten vond in de post-quantum decode- en verify-paden van Bouncy Castle 1.85, een positieve-controlebenadering de testomgeving succesvol valideerde door kritieke fouten in de lengtevalidatie in zowel Bouncy Castle 1.84 als meerdere JDK-releases te ontdekken, wat onthulde dat deze implementaties enkel verschillen in het moment van hun controles in plaats van in de logica van hun beslissingen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de onzichtbare architectuur van het internet beschermt een enorm systeem van digitale sloten en sleutels alles, van bankrekeningen tot privéberichten. Decennialang vertrouwden deze sloten op wiskundige problemen die gemakkelijk te creëren waren, maar bijna onmogelijk voor zelfs de krachtigste computers om op te lossen. Echter, wetenschappers hebben lang voorspeld dat er uiteindelijk een nieuw soort computer zal arriveren, één die opereert volgens de vreemde regels van de quantumfysica. Wanneer die arriveert, zal deze de oude sloten in enkele seconden kunnen kraken. Om zich voor te bereiden op deze toekomst, introduceren onderzoekers nu een nieuwe generatie digitale sloten gebaseerd op verschillende wiskundige structuren die quantumcomputers niet gemakkelijk kunnen breken. Deze nieuwe systemen worden overgenomen door overheden en grote technologiebedrijven om het internet voor de komende decennia te beveiligen.
Het meest kritieke moment in dit nieuwe beveiligingssysteem vindt plaats bij de allereerste keer dat een computer een bericht ontvangt. Voordat de computer kan controleren of een bericht echt is of een geheim kan ontgrendelen, moet het eerst een stroom van ruwe gegevens vertalen naar een bruikbare sleutel of handtekening. Deze vertalingsstap is de voordeur van het systeem. Als de deur slecht gebouwd is, hoeft een aanvaller het slot niet te breken; ze hoeven alleen maar een object met de verkeerde vorm tegen de klink te duwen. Als de deur een misvormd object accepteert, kan het hele systeem crashen, blijven hangen of erger nog, wordt het misleid om een valse sleutel te accepteren. Ervoor zorgen dat deze voordeuren elke mogelijke slechte vorm afwijzen, is net zo belangrijk als het maken van de sloten zelf onbreekbaar.
Een recente studie door onafhankelijk onderzoeker Arpan Sharma richtte zich precies op deze voordeur van de nieuwe quantum-resistente systemen, specifiek binnen de programmeertaal Java, die een enorm deel van de wereldwijde software draait. De onderzoeker testte twee belangrijke implementaties van deze nieuwe standaarden: één geleverd door een veelgebruikte beveiligingsbibliotheek genaamd Bouncy Castle, en een andere die direct in het Java-platform zelf is ingebouwd. Het doel was niet om te zien of de wiskunde correct werkte op perfecte data, maar om te zien wat er gebeurde wanneer de software werd gevoed met miljoenen willekeurige, kapotte en vijandige inputs. De onderzoeker wilde weten of de software deze slechte inputs gracieus zou afhandelen door ze af te wijzen, of dat het zou struikelen, crashen of stilzwijgend een gevaarlijke fout zou accepteren.
Om dit te doen, bouwde de onderzoeker een testmachine die fungeerde als een meedogenloze, geautomatiseerde aanvaller. Het genereerde 900.000 verschillende variaties van data, variërend van licht gewijzigde versies van geldige sleutels tot volkomen zinloze stromen bytes, en voedde deze aan de software. De machine keek nauwlettend om te zien hoe de software reageerde. Het zocht naar elk teken van een crash, elke onverwachte foutmelding die de software niet zou moeten tonen, of elk geval waarin de software een slechte sleutel accepteerde alsof het een goede was. De resultaten voor de huidige versie van de Bouncy Castle-bibliotheek waren opmerkelijk schoon. Van de 900.000 pogingen wees de software elke misvormde input precies zoals het hoorde af, zonder onverwachte fouten te geven en zonder een slechte sleutel te accepteren.
Echter, in wetenschappelijke testen is een resultaat dat zegt dat "niets misging" vaak moeilijk te vertrouwen. Het is mogelijk dat de testmachine zelf te onhandig was om een probleem te vinden, of dat de software gewoon geluk had. Om te bewijzen dat de test daadwerkelijk in staat was een fout te vinden, gebruikte de onderzoeker een slimme truc genaamd een positieve controle. De onderzoeker draaide exact dezelfde testmachine tegen een oudere versie van de Bouncy Castle-software die bekend stond om een specifieke, reële fout. In seconden vond de machine de defect. Het ontdekte dat de oudere software een publieke sleutel met de verkeerde grootte zou accepteren, een fout die later in het proces tot een crash zou kunnen leiden. Omdat de machine succesvol een bekend probleem in de oude versie vond, werd het feit dat het niets vond in de nieuwe versie een betrouwbare bevestiging dat de nieuwe software inderdaad robuust is.
Toen de onderzoeker deze even rigoureuze test toepaste op de nieuwe quantum-resistente code die direct in het Java-platform is ingebouwd, onthulden de resultaten een ander soort probleem. De Java-software crashte niet of accepteerde geen valse handtekening, wat de gevaarlijkste uitkomst zou zijn. In plaats daarvan vertoonde de Java-software een subtiel verschil in de manier waarop het slechte data afhandelde. De Java-software zou een publieke sleutel van elke lengte accepteren, zelfs een sleutel die leeg of veel te kort was, zonder op het moment van binnenkomst een alarm te slaan. Het zou de grootte van de sleutel pas later controleren, wanneer de sleutel daadwerkelijk wordt gebruikt om een taak uit te voeren. Als de sleutel te klein was, zou het systeem dan stoppen en een fout melden. Hoewel dit uiteindelijk een ramp voorkwam, betekende dit dat de software gedurende korte tijd een kapotte sleutel had vastgehouden en deze als geldig had behandeld.
Dit gedrag was consistent over drie verschillende versies van het Java-platform. De software nam uiteindelijk dezelfde beslissing als de Bouncy Castle-bibliotheek: het wees de slechte sleutel af. Het verschil zat puur in de timing. De Bouncy Castle-bibliotheek controleerde de grootte onmiddellijk bij ontvangst van de sleutel en wees deze direct af. Het Java-platform accepteerde de sleutel eerst, sloeg deze op, en wees hem pas af toen het de sleutel probeerde te gebruiken. Dit onderscheid is belangrijk omdat het laat zien dat hoewel beide systemen veilig zijn tegen directe crashes, ze de regels van de toegang anders afhandelen. De studie benadrukte ook een bredere les voor iedereen die dit soort complexe software test: soms verschijnt een fout pas wanneer twee verschillende delen van een systeem met elkaar interageren, zoals een geldige handtekening gekoppeld aan een slechte sleutel. Het testen van de onderdelen in isolatie mist vaak deze verborgen gevaren.
Het onderzoek bracht ook een verborgen obstakel aan het licht in het testproces zelf. Het computersysteem dat de tests uitvoert, heeft een ingebouwde functie die bedoeld is om operaties te versnellen door foutmeldingen te vereenvoudigen wanneer dezelfde fout herhaaldelijk voorkomt. In een massale test met honderdduizenden inputs zou deze functie de details van de fouten stilzwijgend verwijderen, waardoor het voor de testmachine onmogelijk zou zijn om te onderscheiden of een crash een echte, onverwachte fout was of een bekende kwestie. De onderzoeker moest deze functie handmatig uitschakelen om ervoor te zorgen dat de testresultaten accuraat waren. Deze bevinding suggereert dat voor grootschalige beveiligingstests van moderne software, standaardinstellingen soms de problemen kunnen verbergen die onderzoekers juist proberen te vinden.
Uiteindelijk biedt deze studie een duidelijk en geverifieerd beeld van hoe de nieuwe quantum-resistente sloten zich in de praktijk gedragen. De huidige versie van de Bouncy Castle-bibliotheek lijkt zeer veerkrachtig, waarbij slechte inputs onmiddellijk en consistent worden afgewezen. Het Java-platform is ook veilig, hoewel het een iets ander pad bewandelt door een slechte sleutel even vast te houden voordat het deze afwijst. Door een positieve controle te gebruiken om de testmethode te valideren, heeft de onderzoeker ervoor gezorgd dat het resultaat "niets gevonden" voor de nieuwe software een echt teken van kracht is, en niet een falen van de test. Terwijl het internet zich voorbereidt op de overstap naar deze nieuwe beveiligingsstandaarden, is een dergelijke gedetailleerde, onder druk geteste zekerheid essentieel om ervoor te zorgen dat de nieuwe deuren gebouwd zijn om de druk van een vijandige wereld te weerstaan.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.