Was ist zk-SNARKs und Zero Knowledge Proof?

Die Möglichkeiten von zk-SNARKs sind beeindruckend: man kann die Richtigkeit von Berechnungen überprüfen, ohne sie ausführen zu müssen und man erfährt nicht einmal, was ausgeführt wurde – nur, dass es richtig gemacht wurde. Die Realität sieht so aus, dass sich zk-SNARKs auf vier einfache Techniken reduzieren lassen.

 

zero-knowledge-proof-620x434 Was ist zk-SNARKs und Zero Knowledge Proof?
Zero Knowledge Proof @wikipedia.org

 

Für mehr Privatsphäre

In der Welt der Blockchains gewinnt die Privatsphäre immer mehr an Bedeutung. Wenn jemand sagt, dass Bitcoin anonym ist, ist das eine inhärent falsche Behauptung. Denn Blockchains sind von Natur aus völlig offen und transparent. Während also jede einzelne Bitcoin-Adresse nicht mit einer Person in einer Registry verknüpft ist, können alle Transaktionen verfolgt und zugeordnet werden.

Dies ist bekannt als Blockchain-Analyse und wurde bereits von verschiedenen Regierungen und Strafverfolgungsbehörden angewandt

Es gibt zwar Schritte, die ein Bitcoin-Nutzer unternehmen kann, um seine Privatsphäre zu erhöhen, aber es erfordert große Anstrengungen und viele absichtliche Aktionen. Es ist nicht die Standardeinstellung, dass Bitcoin privat ist. Dasselbe gilt für die meisten gängigen Krypto-Währungen, wie z.B. Ethereum und Litecoin. Infolgedessen sind eine Reihe von datenschutzorientierten Token und Techniken aufgetaucht und erfreuen sich von Tag zu Tag größerer Beliebtheit – eine davon ist zk-SNARKs.

 

 

Was ist zk-SNARKs?

zk-SNARKs arbeitet an so genannten Zero-Knowledge-Proofs. Zero Knowledge Proofs wurden direkt von Edward Snowden, dem ehemaligen CIA-Mitarbeiter, in einem Twitter-Posting beworben. Die Idee der Zero-Knowledge-Proofs stammt von mehreren MIT-Forschern in den 1980er Jahren. Vereinfacht ausgedrückt bedeuten Zero-Knowledge-Proofs, dass zwischen zwei Parteien einer Transaktion jede Partei in der Lage ist, sich gegenseitig zu verifizieren, dass sie über einen bestimmten Satz von Informationen verfügt, ohne offen zu legen, was diese Informationen sind. Dies unterscheidet sich deutlich von anderen Systemen, bei denen mindestens eine Partei alle Informationen kennen muss.

Ein Beispiel hierfür ist ein Passwort, das auf einem Server im Klartext gespeichert ist. In diesem Fall, wenn Nutzer sich am Server angemeldet haben, müssen sie das Kennwort besitzen und der Server muss überprüfen, ob das eingegebene Kennwort korrekt ist.

Mit Zero-Knowledge-Proofs könnte die Person, die sich in den Server einloggt, im Wesentlichen durch mathematische Beweise demonstrieren, dass sie das richtige Passwort hat, ohne zu verraten, wie das Passwort konkret lautet. Natürlich speichern die meisten Websites heutzutage keine Benutzerkennwörter im Klartext und speichern stattdessen das, was als Hash bezeichnet wird. Dennoch können Hashes gestohlen und unter Umständen auch berechnet werden.

Als sehr kurze Zusammenfassung haben zk-SNARKs, wie sie derzeit implementiert sind, 4 Hauptinhalte:

  • Kodierung als Polynomproblem: Das zu überprüfende Programm wird in eine quadratische Gleichung aus Polynomen kompiliert: t(x) h(x) = w(x) v(x), wobei die Gleichheit gilt, wenn und nur wenn das Programm korrekt berechnet wird. Der Prover will den Verifizierer davon überzeugen, dass diese Gleichheit gilt
  • Prägnanz durch Zufallsstichprobe: Der Prüfer wählt einen geheimen Bewertungspunkt s, um das Problem von der Multiplikation von Polynomen und der Überprüfung der Gleichheit der Polynomfunktion auf einfache Multiplikation und Gleichheitsprüfung von Zahlen zu reduzieren: t(s)h(s) = w(s)v(s)v(s). Dies reduziert sowohl die Proofgröße als auch die Verifikationszeit enorm
  • Homomorphe Kodierung / Verschlüsselung: Es wird eine Kodier-/Verschlüsselungsfunktion E verwendet, die einige homomorphe Eigenschaften besitzt (aber nicht vollständig homomorph ist, was noch nicht praktikabel ist). Dies erlaubt es dem Prover, E(t(s)), E(h(s)), E(w(s), E(w(s)), E(v(s)) zu berechnen, ohne s zu kennen, er kennt nur E(s) und einige andere hilfreiche verschlüsselte Werte
  • Null Wissen: Der Prover erlaubt die Werte E(t(s)), E(h(s)), E(w(s)), E(w(s)), E(v(s)) durch Multiplikation mit einer Zahl, sodass der Verifier seine korrekte Struktur immer noch überprüfen kann, ohne die tatsächlich kodierten Werte zu kennen

 

zcash-logo-gold Was ist zk-SNARKs und Zero Knowledge Proof?
Zcash Logo in Gold @z.cash

 

Mögliche Anwendungen von zk-Snarks

Das Erstellen von geschützten Transaktionen in Zcash ist nur ein Beispiel aus vielen möglichen Anwendungen von zk-SNARKs. Theoretisch können Nutzer mit einem zk-SNARK jede Beziehung verifizieren, ohne Eingaben oder undichte Informationen preiszugeben. Die Erstellung von Proofs für komplexe Funktionen ist immer noch zu rechenintensiv, um für viele Anwendungen praktikabel zu sein, aber das Zcash-Team schiebt die Grenzen für die Optimierung von zk-SNARKs immer weiter hinaus und geht mit effizienteren Implementierungen bereits neue Wege. Die Zcash-Implementierung von zk-SNARKs kann in der jetzigen Form als Zero-Knowledge Security Layer für Enterprise Use Cases zu jeder bestehenden verteilten Ledger-Lösung hinzugefügt werden. Die Wissenschaftler des Zcash-Teams gehören zu den erfahrensten Forschern von zk-SNARKs weltweit und arbeiten ständig daran, neue Anwendungen zu entwickeln und die Effizienz von Zero-Wissensprotokollen zu verbessern.