← Derniers articles
💻 computer science

Formally Verifying Noir Zero Knowledge Programs with NAVe

Ce document présente NAVe, un vérificateur formel open-source qui utilise SMT-LIB et le solveur cvc5 pour vérifier formellement la correction et les contraintes appropriées des programmes zero-knowledge de Noir en traduisant leur représentation intermédiaire ACIR en équations polynomiales de corps finis.

Auteurs originaux : Pedro Antonino, Namrata Jain

Publié 2026-01-15
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Pedro Antonino, Namrata Jain

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous construisez un coffre-fort de haute sécurité. Vous voulez prouver à un directeur de banque que vous connaissez la combinaison du coffre sans pour autant lui révéler la combinaison elle-même. C'est toute la magie des preuves à connaissance nulle (Zero-Knowledge ou ZK).

Cependant, la construction de ces coffres-forts est délicate. Les « plans » de ces preuves sont des puzzles mathématiques complexes appelés circuits arithmétiques. Si une seule ligne du plan est erronée, le coffre pourrait être vulnérable, ou la preuve pourrait échouer.

Ce document présente un nouvel outil appelé NAVe (Noir Acir Verifier) conçu pour vérifier ces plans afin de détecter les erreurs avant même qu'ils ne soient utilisés. Voici comment cela fonctionne, expliqué simplement :

1. Le Problème : La « Recette Secrète » contre le « Livre de Cuisine »

Les auteurs se concentrent sur un langage de programmation appelé Noir. Considérez Noir comme un livre de cuisine de haut niveau qui facilite l'écriture de recettes pour ces coffres-forts.

  • Le Cuisinier (Développeur) : Écrit une recette en Noir, facile à lire.
  • Le Traducteur (Compilateur) : Transforme cette recette en un manuel d'instructions de bas niveau très strict appelé ACIR. Ce manuel est une liste d'équations mathématiques que l'ordinateur doit résoudre pour prouver que le coffre est sécurisé.
  • Le Danger : Parfois, le traducteur commet une erreur, ou le cuisinier oublie d'inclure une étape cruciale. Dans le monde de la ZK, on appelle cela être « sous-contraint » (under-constrained). C'est comme écrire une recette qui dit « ajoutez du sel » mais en oubliant de préciser combien. Le résultat sera peut-être comestible, mais ce n'est pas le plat que vous aviez prévu.

2. La Solution : Le « Détective Mathématique » (NAVe)

Les auteurs ont créé NAVe, un vérificateur formel. Considérez NAVe comme un détective mathématique super intelligent qui lit le manuel d'instructions de bas niveau (ACIR) et vérifie si les mathématiques correspondent réellement à ce que le cuisinier avait prévu.

NAVe utilise un puissant moteur logique (appelé solveur SMT) pour poser des questions telles que :

  • « Si je saisis un nombre secret, est-ce que les mathématiques aboutissent toujours à la preuve publique correcte ? »
  • « Existe-t-il un moyen de tromper le système avec un faux nombre ? »

Si les mathématiques sont défaillantes, NAVe ne se contente pas de dire « Erreur ». Il agit comme un détective trouvant un indice : il montre au développeur exactement quel nombre aurait pu être utilisé pour briser le système. Cela l'aide à corriger le plan immédiatement.

3. Deux Façons de Résoudre l'Énigme

Le document décrit deux manières différentes dont NAVe traduit les puzzles mathématiques pour les résoudre :

  1. La Voie des Entiers : Il traite les nombres comme des nombres entiers ordinaires (1, 2, 3...) et vérifie les calculs selon les règles arithmétiques standards.
  2. La Voie du Corps Fini (Finite Field) : Il traite les nombres comme s'ils étaient sur une horloge circulaire (où, après un certain nombre, on revient à zéro). C'est ainsi que fonctionnent les véritables preuves ZK.

Les auteurs ont découvert qu'aucune des deux méthodes n'est parfaite pour toutes les situations. Parfois, le détective des « Entiers » est plus rapide ; d'autres fois, le détective du « Corps Fini » est meilleur. Ils suggèrent d'utiliser les deux détectives en même temps pour obtenir les meilleurs résultats.

4. Le Piège de l'« Implicite » (Unconstrained)

Une caractéristique unique de Noir est le code « non contraint » (unconstrained). Imaginez une partie de la recette où le chef est autorisé à deviner les ingrédients sans être contrôlé. Cela est utile pour la vitesse, mais dangereux si le chef se trompe dans ses suppositions.

  • Le Risque : Un développeur pourrait écrire un code qui semble vérifier les ingrédients, mais parce qu'il se trouve dans la section « non contrainte », l'ordinateur ne force pas réellement la vérification.
  • Le Rôle de NAVe : NAVe recherche spécifiquement ces « vérifications fantômes ». Il vérifie que même si un développeur utilise la section de « supposition », il a ajouté une règle stricte distincte (un assert) pour s'assurer que la supposition était bien correcte.

5. Ce Qu'Ils Ont Découvert

Les auteurs ont testé NAVe sur une variété de programmes Noir existants :

  • Cela fonctionne : NAVe a réussi à détecter des erreurs dans des programmes où les mathématiques ne correspondaient pas à l'intention initiale.
  • Le Goulot d'Étranglement : Ils ont découvert que vérifier les « contraintes de plage » (s'assurer qu'un nombre respecte un certain nombre de bits, comme vérifier si un nombre est compris entre 0 et 255) est très difficile pour le détective mathématique. Cela prend parfois beaucoup de temps ou bloque le processus.
  • L'Avenir : Ils prévoient de construire de meilleurs « raccourcis » (abstractions) pour aider le détective à résoudre ces puzzles de plage complexes plus rapidement.

Résumé

En bref, NAVe est un filet de sécurité pour les développeurs construisant des applications préservant la confidentialité. Il traduit leur code en un langage mathématique strict et utilise un solveur puissant pour s'assurer que le code fait exactement ce qu'il prétend faire, capturant des bugs subtils qui pourraient autrement conduire à des failles de sécurité. C'est comme avoir un inspecteur rigoureux qui vérifie l'intégrité structurelle d'un pont avant que quiconque ne soit autorisé à rouler dessus.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →