Kehrseite des Nullwissens: Eine Hintertür in zk-SNARK, die nicht erkannt werden kann

Wenn Sie das Zero-Disclosure-Evidence-Protokoll der SNARK-Familie verwenden, kennen Sie die Spielregeln nie. Diese Regeln werden von den Teilnehmern an der Prozedur zum Generieren vertrauenswürdiger Systemparameter festgelegt. Nach deren Abschluss ist es jedoch nicht möglich, diese Regeln zu überprüfen. Sie können an die Richtigkeit der Generation glauben, aber wenn Sie nicht daran teilgenommen haben, haben Sie keine hundertprozentigen Garantien.



In letzter Zeit wurden in der Blockchain-Community verschiedene Zero-Knowledge-Protokolle erwähnt (um einen allgemeinen Überblick zu erhalten, empfehle ich diesen Artikel ): hauptsächlich im Zusammenhang mit dem Datenschutz, seltener im Zusammenhang mit der Skalierbarkeit und anderen.

Eine der am besten untersuchten und vor allem implementierten ist die Protokollfamilie zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). Ein solches Protokoll wird insbesondere in der Zcash-Kryptowährung verwendet. Die Popularität von SNARK ist gerechtfertigt: Das Protokoll ermöglicht es uns, Fakten ohne Offenlegung zu beweisen, die Beweise sind relativ klein, und all dies mit der Sicherheit, die uns die moderne Kryptographie auf elliptischen Kurven bietet.

Es war jedoch nicht wie üblich nicht ohne Nachteile: Der Hauptnachteil dieser Familie von zk-Protokollen ist die Notwendigkeit, anfängliche (vertrauenswürdige) Systemparameter zu generieren - dieser Prozess wird auch als Zeremonie bezeichnet. Schließlich werden die zu zerstörenden geheimen Parameter zur Erzeugung verwendet - sie werden als toxisch bezeichnet. Das Hauptproblem besteht darin, dass die Person, die sie besitzt, bei Beibehaltung toxischer Parameter falsche Fakten nachweisen kann (im Fall von Zcash Kryptowährung aus der Luft erzeugen).

Erste Parametergenerierung


Ferner wird die den SNARK-Protokollen zugrunde liegende Mathematik nur oberflächlich beeinflusst. Wenn Sie daran interessiert sind, es zu klären, schlage ich eine Reihe von Artikeln von Vitalik Buterin zu diesem Thema vor.

Schauen wir uns den Prozess der Generierung vertrauenswürdiger Parameter an. Wir haben also eine Erklärung des Problems, dessen Lösung wir ohne Offenlegung beweisen wollen. Zum Beispiel wollen wir das Wissen über die Wurzel einer quadratischen Gleichung testen:

x26x+5=0


Gemäß dem Protokoll müssen wir diese Gleichung in die QAP-Form (Quadratic Arithmetic Programs) bringen. Um Beweise zu generieren und zu verifizieren, ist es ferner erforderlich, die Anfangsparameter zu erhalten. Lassen wir in Klammern weg, wie die vertrauenswürdigen Parameter von QAP erhalten werden, was diese Parameter sind und wie mit ihrer Hilfe Beweise überprüft werden können, um nicht in die schwere Mathematik einzutauchen. Wir stellen nur fest, dass die Parameter als Punkte auf einer elliptischen Kurve dargestellt werden:


Sie ergeben sich aus der Problemstellung in Form von QAP unter Verwendung der irreversiblen Multiplikationsoperation auf einer elliptischen Kurve unter Verwendung toxischer Parameter.

Nachdem die Anfangsparameter erstellt wurden, können wir mit den Beweisen arbeiten. In unserem Fall können wir den Beweis generieren und überprüfen, dass die Wurzel der Gleichung bekannt ist (z. B. x=1 ) Darüber hinaus enthüllt der Beweis nicht den Wert des Geheimnisses (die Wurzel der Gleichung) und besteht aus mehreren Punkten der elliptischen Kurve.

Aufgrund der dem Protokoll zugrunde liegenden Mathematik kann diese Person jedoch falsche Tatsachen nachweisen, wenn die toxischen Parameter nach der Zeremonie von jemandem beibehalten werden. Zurück zu unserem Beispiel können wir beweisen, dass 2 die Wurzel der Gleichung ist, obwohl dies offensichtlich nicht der Fall ist.

Die Zeremonie


Seriöse Projekte, die SNARK-Protokolle verwenden, sind sich des Problems der toxischen Parameter bewusst und nehmen die Richtigkeit des Verfahrens zur Erzeugung der Anfangsparameter ernst. Das bekannteste Beispiel ist die Zcash-Zeremonie .

Die erste Zeremonie fand im Oktober 2016 statt, an der 6 berühmte Entwickler aus der Cryptocurrency-Community teilnahmen. Das Zeremonieprotokoll bietet ausreichende Sicherheitsgarantien. Wenn mindestens ein Teilnehmer an der Zeremonie ehrlich ist - seinen Teil der toxischen Parameter korrekt zerstört - und nicht gehackt wird, ist die Zeremonie sicher.

Die zweite , fortgeschrittenere Zeremonie zur Generierung vertrauenswürdiger Parameter fand 2017-2018 statt. Es bestand aus zwei Phasen, im ersten Teil (Powers of Tau) nahmen 87 Personen teil und im letzten Teil (Sapling MPC) mehr als 90 Personen. Wie bei der ursprünglichen Zeremonie kann die Zeremonie mit der Ehrlichkeit mindestens eines Teilnehmers als sicher angesehen werden. Ein wichtiges Merkmal der zweiten Zeremonie war, dass jeder Teilnehmer werden konnte. Somit hatte jeder die Möglichkeit, 100% ige Garantie für die Richtigkeit des Protokolls zu erhalten.

Zusammenfassend ist anzumerken, dass die Kritikalität der Zeremonie und die sich daraus ergebenden Bedrohungen für jedes spezifische System separat betrachtet werden sollten. Gleichzeitig ist für alle Systeme, die SNARK-Protokolle verwenden, ein zuverlässiges Verfahren zur Erzeugung von Anfangsparametern mit Garantien für die Zerstörung toxischer Parameter erforderlich.

Source: https://habr.com/ru/post/de434720/


All Articles