Zum Inhalt springen

Zero-Knowledge-Beweis

Ein präziser Leitfaden zu Zero-Knowledge-Beweisen: Vollständigkeit, Korrektheit, Simulation, Zeugen, Setup-Annahmen, Blockchain-Anwendungen und Verifikationsrisiken.

Aktualisiert

Nur zu Bildungszwecken; keine Anlage- oder Sicherheitsberatung. Ein gültiger Beweis garantiert nur die codierte Aussage unter den Annahmen des Beweissystems.

Direkte Antwort

Mit einem Zero-Knowledge-Beweis (ZKP) überzeugt ein Beweiser einen Verifizierer von der Wahrheit einer Aussage, ohne den geheimen Zeugen offenzulegen, der sie belegt. Die formale Garantie besagt nicht, dass das Protokoll buchstäblich keine Informationen enthält. Sie besagt, dass sich alles, was ein zulässiger Verifizierer lernt, ohne den Zeugen simulieren lässt, abgesehen von dem, was aus der öffentlichen Aussage folgt.

Ein Beweissystem wird anhand von drei getrennten Eigenschaften beurteilt: Vollständigkeit, damit ein ehrlicher Beweiser mit gültigem Zeugen akzeptiert wird; Korrektheit, damit eine falsche Aussage nur mit vernachlässigbarer Wahrscheinlichkeit akzeptiert wird; und Zero Knowledge, damit der Zeuge im definierten Bedrohungsmodell verborgen bleibt. Viele praktische Systeme sind rechnerische Argumente: Ihre Korrektheit gilt gegenüber rechnerisch beschränkten Angreifern und hängt von ausgewiesenen kryptografischen Annahmen ab.

Zero Knowledge ist außerdem nicht dasselbe wie Kürze oder Gültigkeit. Ein Beweis kann Zero Knowledge, aber teuer zu prüfen sein, kurz sein und dennoch öffentliche Daten zeigen oder eine korrekt codierte Relation beweisen, die nicht der beabsichtigten Anwendungsregel entspricht.

1
Ausführen

Der Prüfer führt einen Stapel oder eine Berechnung aus und zeichnet den resultierenden Zustandsübergang auf.

Funktionsweise

Ausgangspunkt sind eine öffentliche Aussage x, ein privater Zeuge w und eine präzise definierte Relation R. Der Beweiser erzeugt einen Beweis, den der Verifizierer mit öffentlichen Parametern oder einem Verifikationsschlüssel bewertet. Die beabsichtigte Korrektheitsaussage lässt sich so zusammenfassen:

Verify(vk, x, proof) = 1 => exists w: R(x, w) = 1

Die Formel besagt nur, dass für die codierte Relation ein passender Zeuge existiert. Sie legt ihn nicht offen, authentifiziert keine Offchain-Eingaben und zeigt nicht, dass R jede beabsichtigte Geschäftsregel erfasst.

  • Interaktiv und nicht interaktiv. Frühe ZK-Protokolle tauschen Herausforderungen und Antworten aus. Nicht interaktive Systeme bündeln die Evidenz in einem Beweis und stützen sich meist auf Setup-Material, ein Random-Oracle-Modell oder beides.
  • Setup-Modell. Groth16 liefert sehr kleine Beweise, benötigt aber ein schaltungsspezifisches strukturiertes Setup. PLONK-Systeme können eine universelle, aktualisierbare strukturierte Referenzzeichenfolge verwenden. STARKs vermeiden ein strukturiertes vertrauenswürdiges Setup, erzeugen aber meist größere Beweise und beruhen auf Hashes und Niedriggradtests.
  • Arithmetisierung und Commitments. Implementierungen übersetzen ein Programm in algebraische Nebenbedingungen, binden aus dem Zeugen abgeleitete Werte und nutzen Zufallsprüfungen, damit der Verifizierer die Berechnung weder wiederholen noch den Zeugen sehen muss.
  • Wissensbeweis. Manche Systeme behaupten zusätzlich, dass ein akzeptierter Beweiser einen Zeugen kennt, formalisiert durch einen Extraktor. Das ist eine eigene Eigenschaft und folgt nicht aus der Bezeichnung „Zero Knowledge“.

Beispiel

Angenommen, x enthält ein Commitment und einen Schwellenwert von 100 units, während w den gebundenen Saldo und den Blinding-Faktor enthält. Die Relation prüft, ob sich das Commitment korrekt öffnen lässt und der Saldo mindestens 100 units beträgt. Ein gültiger ZKP kann diese Relation belegen, ohne den genauen Saldo offenzulegen.

Das Ergebnis beweist für sich allein weder, dass der Beweiser das Konto besitzt, noch dass die Mittel unbelastet sind oder dass dasselbe Commitment nicht wiederverwendet wurde. Dafür braucht es zusätzliche Nebenbedingungen und öffentliche Eingaben.

Bei einer abgeschirmten Kryptowährung kann eine Schaltung Autorisierung, Werterhaltung und Duplikatschutz erzwingen und ausgewählte Transaktionsdetails verbergen. Bei einem Validity-Rollup kann ein Beweis einen Zustandsübergang bestätigen; Transaktionsdaten können dennoch öffentlich sein, daher bedeutet „ZK Rollup“ nicht automatisch private Transaktionen.

Risiken

  • Eine unvollständige oder fehlerhafte Schaltung kann die falsche Regel perfekt beweisen.
  • Fehlende Domain Separation, Chain-Kennungen, Wurzeln oder Commitments können einen Beweis an den falschen Kontext binden.
  • Ein kompromittiertes Setup oder verbliebener „Toxic Waste“ kann bei Systemen mit vertrauenswürdigem Setup die Korrektheit brechen.
  • Fehler in Beweiser, Verifizierer, Transkript, Kurve, Hash, Compiler oder Smart Contract können die theoretische Garantie aufheben.
  • Öffentliche Eingaben, Zeitpunkt, Transaktionsgraphen, Gebühren und Netzwerkmetadaten können außerhalb der formalen ZK-Aussage Informationen verraten.
  • Seitenkanäle bei Zeugenerzeugung, Browsern, Hardware oder entfernten Beweisdiensten können Geheimnisse vor der Beweiserzeugung offenlegen.
  • Beweisprüfung schafft weder Datenverfügbarkeit noch Sequenzer-Liveness, Settlement-Finalität, Zensurresistenz oder sichere Upgrades.
  • Kryptografische Annahmen und konkrete Sicherheitsreserven unterscheiden sich; Beweisgröße oder Prüfgeschwindigkeit allein sind kein Sicherheitsranking.

Häufige Missverständnisse

  • „Zero Knowledge legt keine Daten offen.“ Die öffentliche Aussage und absichtlich offengelegte Ausgaben bleiben sichtbar; Metadaten können außerhalb des Modells lecken.
  • „Ein gültiger Beweis bedeutet, dass die Anwendung korrekt ist.“ Akzeptiert wurde die codierte Relation. Schaltungs-, Integrations- und Richtlinienfehler bleiben möglich.
  • „Alle ZK-Systeme haben dieselben Vertrauensannahmen.“ Setup-Zeremonien, Kurven, Hashes, Transkriptmodelle und Upgrade-Kontrollen unterscheiden sich wesentlich.
  • „ZK ist Verschlüsselung.“ Verschlüsselung verbirgt Daten zur späteren Entschlüsselung durch Berechtigte; ein ZKP belegt eine Aussage, ohne den Zeugen zur Entschlüsselung zu senden.

Verwandte Themen

Quellen

Navigation

Wiki durchsuchen...