← Nieuwste papers
💻 computer science

Formally Verifying Noir Zero Knowledge Programs with NAVe

Dit artikel presenteert NAVe, een open-source formele verifieerder die SMT-LIB en de cvc5-solver gebruikt om de correctheid en de juiste beperkingen van Noir zero-knowledge-programma's formeel te verifiëren door hun ACIR-tussenrepresentatie te vertalen naar polynoomvergelijkingen over eindige velden.

Oorspronkelijke auteurs: Pedro Antonino, Namrata Jain

Gepubliceerd 2026-01-15
📖 4 min leestijd☕ Koffiepauze-leesvoer

Oorspronkelijke auteurs: Pedro Antonino, Namrata Jain

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://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

Stel je voor dat je een hoogbeveiligde kluis bouwt. Je wilt aan een bankdirecteur bewijzen dat je de combinatie van de kluis kent, zonder hem de combinatie daadwerkelijk te vertellen. Dit is de magie van Zero-Knowledge (ZK) proofs.

Het bouwen van deze kluizen is echter lastig. De "blauwdrukken" voor deze bewijzen zijn complexe wiskundige puzzels die arithmetic circuits worden genoemd. Als één regel van de blauwdruk fout is, kan de kluis onveilig zijn, of kan het bewijs mislukken.

Dit artikel introduceert een nieuwe tool genaamd NAVe (Noir Acir Verifier), ontworpen om deze blauwdrukken te controleren op fouten voordat ze ooit worden gebruikt. Hier is hoe het werkt, eenvoudig uitgelegd:

1. Het Probleem: Het "Geheime Recept" versus het "Kookboek"

De auteurs richten zich op een programmeertaal genaamd Noir. Denk aan Noir als een hoogwaardig kookboek dat het makkelijk maakt om recepten voor deze kluizen te schrijven.

  • De Kok (Developer): Schrijft een recept in gemakkelijk leesbare Noir.
  • De Vertaler (Compiler): Vertaalt dat recept naar een strikte, laag-niveau instructiehandleiding genaamd ACIR. Deze handleiding is een lijst met wiskundige vergelijkingen die de computer moet oplossen om te bewijzen dat de kluis veilig is.
  • Het Gevaar: Soms maakt de vertaler een fout, of vergeet de kok een cruciale stap toe te voegen. In de wereld van ZK wordt dit "under-constrained" genoemd. Het is alsof je een recept schrijft waarin staat "voeg zout toe", maar vergeet te vermelden hoeveel. Het resultaat is misschien eetbaar, maar het is niet het gerecht dat je bedoelde.

2. De Oplossing: De "Wiskundige Detective" (NAVe)

De auteurs hebben NAVe gecreëerd, een formele verifieerder. Denk aan NAVe als een super slimme wiskundige detective die de laag-niveau instructiehandleiding (ACIR) leest en controleert of de wiskunde daadwerkelijk overeenkomt met wat de kok bedoelde.

NAVe gebruikt een krachtige logische engine (een SMT solver) om vragen te stellen zoals:

  • "Als ik een geheim getal invoer, resulteert de wiskunde dan altijd in het juiste publieke bewijs?"
  • "Is er een manier om het systeem te misleiden met een vals getal?"

Als de wiskunde niet klopt, zegt NAVe niet alleen "Error". Het gedraagt zich als een detective die een aanwijzing vindt: het laat de ontwikkelaar precies zien welk getal zij hadden kunnen gebruiken om het systeem te breken. Dit helpt hen om de blauwdruk direct te herstellen.

3. Twee Manieren om de Puzzel Op te Lossen

Het paper beschrijft twee verschillende manieren waarop NAVe de wiskundige puzzels vertaalt om ze op te lossen:

  1. De Integer-manier: Het behandelt de getallen als gewone gehele getallen (1, 2, 3...) en controleert de wiskunde met standaard rekenregels.
  2. De Finite Field-manier: Het behandelt de getallen alsof ze op een cirkelvormige klok staan (waarbij je na een bepaald getal weer terugvalt naar nul). Dit is hoe de werkelijke ZK-bewijzen werken.

De auteurs ontdekten dat geen van beide methoden perfect is voor elke situatie. Soms is de "Integer"-detective sneller; andere keren is de "Finite Field"-detective beter. Ze suggereren om beide detectives tegelijkertief te gebruiken voor het beste resultaat.

4. De "Unconstrained" Valstrik

Een uniek kenmerk van Noir is "unconstrained code". Stel je een deel van het recept voor waar de chef de ingrediënten mag raden zonder dat dit gecontroleerd wordt. Dit is nuttig voor de snelheid, maar gevaarlijk als de chef het fout heeft.

  • Het Risico: Een ontwikkelaar kan code schrijven die lijkt op een controle van de ingrediënten, maar omdat het in het "unconstrained" gedeelte staat, dwingt de computer de controle niet echt af.
  • De Taak van NAVe: NAVe zoekt specifiek naar deze "ghost checks". Het verifieert dat zelfs als een ontwikkelaar het "raden"-gedeelte gebruikt, hij een aparte, strikte regel (een assert) heeft toegevoegd om te controleren of de gok daadwerkelijk correct was.

5. Wat Ze Hebben Ontdekt

De auteurs hebben NAVe getest op een verscheidenheid aan bestaande Noir-programma's:

  • Het Werkt: NAVe heeft succesvol fouten opgevangen in programma's waar de wiskunde niet overeenkwam met de intentie.
  • De Bottleneck: Ze ontdekten dat het controleren van "range constraints" (controleren of een getal binnen een specifiek aantal bits past, zoals controleren of een getal tussen 0 en 255 ligt) erg moeilijk is voor de wiskundige detective. Het duurt soms lang of loopt vast.
  • De Toekomst: Ze zijn van plan om betere "shortcuts" (abstracties) te bouwen om de detective te helpen deze lastige range-puzzels sneller op te lossen.

Samenvatting

Kortom, NAVe is een vangnet voor ontwikkelaars die privacy-beschermende applicaties bouwen. Het vertaalt hun code naar een strikte wiskundige taal en gebruikt een krachtige solver om te garanderen dat de code precies doet wat deze beweert te doen, waarbij subtiele bugs worden opgevangen die anders tot beveiligingsproblemen zouden kunnen leiden. Het is alsof er een rigoureuze inspecteur de structurele integriteit van een brug controleert voordat er iemand overheen mag rijden.

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.

Probeer Digest →