Werkzeuge: Zero-Knowledge Proof
Geht das: Jemanden davon überzeugen, dass man ein Geheimnis kennt, ohne dieses Geheimnis zu verraten?
Ja, das geht tatsächlich, so unmöglich es auf den ersten Blick erscheint. Und zwar mit einem kryptographischen Verfahren, das Mitte der 1980er-Jahre als “Zero-Knowledge Proof” erstmals publiziert wurde und von dem es inzwischen zahlreiche Varianten gibt, nicht nur in der Theorie, sondern auch in der Praxis.
So bietet die ING ein Login-Verfahren für ihr Online-Banking an, bei dem man dazu aufgefordert wird, zwei Ziffern seines sechsstelligen DiBa-Keys einzutippen (den man natürlich geheim halten soll). Welche Ziffern man eingeben soll, würfelt der Login-Prozess bei jeder Anmeldung neu aus.
Weil der DiBa-Key nicht über die Leitung zwischen Kunde und Bank fließt, kann ein Angreifer den Key nicht ermitteln, selbst wenn er in der Lage wäre, die verschlüsselte Kommunikation zu knacken, z.B. mithilfe eines geheimdienstlichen Rechnerparks oder eines gekaperten Botnetzes. (Weil der DiBa-Key über eine virtuelle Tastatur eingegeben wird, hat auch ein Angreifer mit Keylogger keine Chance, die Eingabe mitzulesen.)
Es handelt sich also um ein statistisches Verfahren, denn die Bank kann nur mit einer gewissen Wahrscheinlichkeit darauf schließen, dass der Kunde den DiBa-Key wirklich kennt – schließlich wäre es ja denkbar, dass ein Angreifer mit einer gehörigen Portion Glück zufällig auf die beiden richtigen Ziffern tippt, ohne den vollständigen DiBa-Key zu kennen. Natürlich muss die Bank verhindern, dass man so lange herumprobiert, bis man irgendwann die richtigen Ziffern erwischt.
Es wurden viele Szenarien entwickelt, die das Potential des Zero-Knowledge Proof veranschaulichen, ohne die Wissbegierigen durch verzwickte Theorie abzuschrecken. Mein Lieblings-Szenario geht so:
Angenommen Sie haben zwei Tennisbälle, die bis auf die Farbe völlig gleich sind: Der eine ist rot, der andere grün. Und Sie haben einen Freund, der farbenblind ist, also Rot und Grün nicht unterscheiden kann. Mit dem Zero-Knowledge Proof können Sie Ihren Freund nun davon überzeugen, dass Sie die beiden Bälle unterscheiden können, ohne zu verraten, wie Sie das machen.
Wie geht das?
Sie bitten Ihren Freund, die beiden Bälle hinter seinem Rücken zu vertauschen oder nicht zu vertauschen und dann wieder vorzuzeigen. Sie entscheiden sich für eine der beiden Farben, z.B. für Rot, und zeigen dann auf den roten Ball.
Ihr Freund soll nun die Bälle so oft hinter seinem Rücken vertauschen und Sie zeigen jedes Mal wieder auf den roten Ball, bis Ihr Freund davon überzeugt ist, dass Sie die Bälle unterscheiden können, auch wenn ihm ein Rätsel bleibt, wie zum Teufel Sie das anstellen.
Fazit: Ein Geheimnis verschlüsselt auszutauschen, ist gut. Es nicht zu verraten, aber trotzdem nachzuweisen, dass man es kennt, ist besser. Genau das leistet der Zero-Knowledge Proof.
Werkzeuge: Zero-Knowledge Proof Read More »