#dusk $DUSK @Dusk
Il n’a fallu que quatre nombres. Le chemin Phoenix de Dusk, protégé par son bouclier — la partie qui porte tout son discours sur la confidentialité — a vérifié des preuves en un seul appel, et cet appel n’a jamais contrôlé quatre valeurs de sélecteur contre les engagements qui se trouvaient justement dans la clé du vérificateur. $DUSK #dusk @Dusk avait déjà passé trois audits distincts avant qu’on le découvre en février.
Ce qui m’a frappé, c’est la forme de l’erreur. Les sélecteurs sont censés être des données publiques, fixes, côté vérificateur, dans le PLONK standard. Les widgets personnalisés de dusk-plonk les ont forcés à devenir des nombres fournis par le prouveur, et personne n’a mis à jour le modèle mental qui détermine ce qui doit être lié cryptographiquement. La logique du circuit elle-même était correcte de bout en bout — l’écart se trouvait juste en dessous, dans le câblage de vérification.
Ce qui a changé pour moi, c’est de réaliser que « audité trois fois » n’est pas la même chose que « audité contre le bon modèle de menace ». Un relecteur qui vérifie la logique des contraintes peut passer complètement à côté d’une hypothèse structurelle qui cesse silencieusement de tenir. C’est plus difficile à repérer qu’un bug de code classique, et ce n’est pas propre à Dusk — le même schéma est apparu indépendamment dans Jellyfish d’Esspresso.
La prochaine chose à vérifier : si la volonté de Dusk de pousser une spécification normalisée de vérification PLONK est réellement publiée, ou si elle reste un fil de discussion.