Zero Knowledge Proof – die eigene Privatsphäre schützen

2022-11-18
Autor:
Jan Tissler

Der «Zero Knowledge Proof» ist eine Methode, um Kenntnis über etwas zu beweisen, ohne das Wissen selbst preiszugeben. Das lässt sich beispielsweise nutzen, um sich bei einem Dienst anzumelden, ohne dafür das Passwort übertragen zu müssen. Wie das funktioniert, erklären wir hier.

Jeden Tag geben wir unsere Privatsphäre ein wenig auf, um im Gegenzug eine Website nutzen zu können oder eine App. Denn mal Hand aufs Herz: Wer von uns hat sich tatsächlich erst die Datenschutzerklärung oder die Nutzungsbedingungen im Detail durchgelesen und danach entschieden, dass man dieses Angebot doch nicht nutzen möchte?

Technisch wäre es bei alldem durchaus möglich, die Privatsphäre und die Daten der Nutzer besser zu schützen. Ein Beispiel dafür ist das Modell des «Zero Knowlegde Proof», das Shafi Goldwasser, Silvio Micali und Charles Rackoff in ihrer Abhandlung «The knowledge complexity of interactive proof systems» beschrieben haben.

Anwendungsbeispiel Passwörter

Es will vor allem ein Problem lösen: Wie beweise ich, dass ich Kenntnis über etwas habe, ohne das Wissen selbst preiszugeben? Praktisches Beispiel: Passwörter. Wir alle haben dutzende Zugangsdaten für die unterschiedlichsten Services angelegt. Um uns dort anmelden zu können, übertragen wir das Passwort an den betreffenden Dienst, der es mit den bei sich abgespeicherten Information abgleicht.

Dieses Vorgehen bietet verschiedene Angriffspunkte, beispielsweise auf dem eigenen Gerät, auf dem Server des Dienstes und auf dem Übertragungsweg. Zwar gibt es Sicherheitsmassnahmen wie eine verschlüsselte Verbindung, die im allgemeinen einen hohen Schutz bieten. Aber eine entsprechend starke Motivation vorausgesetzt, lassen sich Mittel und Wege finden, sie auszuhebeln. Ein Beispiel ist ein «Man-in-the-Middle-Angriff», bei dem ausgetauschte Informationen von einer dritten Stelle abgehört und eventuell manipuliert werden.

Nicht zuletzt sind oft die Menschen selbst das schwächste Glied in der Sicherheitskette und bei lohnenden Zielen setzen die Angreifer auf teils überraschend ausgefeilte Taktiken.

Bei besonders wichtigen Zugängen wäre es entsprechend besser, könnte man sich dort anmelden, ohne ein Passwort preiszugeben. Das leistet beispielsweise das «Secure Remote Password»-Protokoll, das auf einen Zero Knowledge Proof setzt. Hier beweist man auf einem anderen Weg, dass man die entsprechende Kenntnis hat und zugangsberechtigt ist.

Aber wie funktioniert das nun?

Zero Knowledge Proof einfach erklärt

Um die Idee des Zero Knowledge Proof zu illustrieren, eignet sich eine Geschichte, die Jean-Jacques Quisquater, Louis Guillou et al in «How to explain zero-knowledge protocols to your children» erzählen.

In Kurzform geht sie so: In einer Höhle gibt es eine Gabelung und egal, welchem der beiden Wege man folgt, man landet schliesslich an einer Tür. Könnte man sie öffnen, würde man feststellen, dass dahinter der jeweils andere Pfad ist, den man an der Gabelung nicht genommen hat. Die beiden Pfade von der Gabelung sind also verbunden, unterbrochen von der verschlossenen Tür.

Wenn eine Person A nun behauptet, dass sie die Tür öffnen kann, dann könnte sie eine Person B mitnehmen und es schlicht vorführen. In dem Moment würde sie aber preisgeben, wie sie die Tür öffnet. Wie kann sie stattdessen beweisen, dass sie dieses Wissen besitzt, ohne es im gleichen Moment zu verraten?

In der oben genannten Geschichte funktioniert das wie folgt: Person A geht in die Höhle und wählt zufällig einen der beiden Pfade an der Gabelung aus. Person B wartet zunächst draussen, kommt dann ebenfalls herein und ruft Person A zu, von welcher Seite der Gabelung sie zurückkommen soll. Ist Person A bereits auf der richtigen Seite, geht sie einfach zurück. Ist sie auf der falschen Seite, muss sie die Tür öffnen, um den anderen Pfad zu nutzen.

Diesen Vorgang wiederholen beide solange, bis Person B überzeugt ist, dass Person A nicht zufällig jedes Mal auf der richtigen Seite ist, sondern die Tür dazwischen tatsächlich öffnen kann. Je häufiger das wiederholt wird, desto wahrscheinlicher wird das.

Die Person A aus diesem Beispiel wird bei einem Zero Knowledge Proof als «Beweiser» («prover») bezeichnet, die Person B ist der «Verifizierer» («verifier»).

Herausforderungen mit Zero-Knowledge-Anwendungen

Eine wesentliche Schwierigkeit ist es, einen entsprechenden Test zu entwickeln und umzusetzen. Eine andere Herausforderung kann es sein, Fehlern auf die Spur zu kommen: Schliesslich finden die Abläufe absichtlich so statt, dass sie nicht einfach einsehbar sind.

Ein anderes Problem ist praktischer Natur: Verliert ein Nutzer sein Passwort, gibt es für den Anbieter keinen Weg, es wieder herzustellen oder es abzuändern. Hier ist man also selbst dafür verantwortlich, es sicher aufzubewahren.

Schlusswort

Es zeigt sich: Mit dem entsprechenden Einfallsreichtum und Aufwand lässt sich durchaus eine Lösung finden, die keine Daten überträgt, die ein Angreifer abfangen und ausnutzen könnte. Der «Zero Knowledge Proof» und darauf basierende Architekturen und Anwendungen sind insofern ein gutes Beispiel für besonders sichere und datensparsame Lösungen.