Fiat-Shamir-Protokoll
aus Wikipedia, der freien Enzyklopädie
Das Fiat-Shamir-Protokoll ist ein Protokoll aus dem Gebiet der Kryptografie, mit dem man sich jemandem gegenüber authentisieren kann. Dazu zeigt man, dass man eine Quadratwurzel (privater Schlüssel) einer vorher veröffentlichten Quadratzahl (öffentlicher Schlüssel) kennt. Bei dem Verfahren wird nur ein einziges Bit des privaten Schlüssels preisgegeben, nämlich das Vorzeichen. Eine Optimierung ist das Feige-Fiat-Shamir-Protokoll, bei dem überhaupt keine Information über den privaten Schlüssel preisgegeben wird. Man spricht deswegen von einem Zero-Knowledge-Protokoll. Insbesondere ist das Protokoll perfekt zero-knowledge. Das heißt es gibt einen Simulations-Algorithmus, der in polynomieller Zeit eine Mitschrift erzeugt, die von der einer echten Interaktion nicht zu unterscheiden ist.
Das Fiat-Shamir-Protokoll wurde im Jahr 1986 von Amos Fiat und Adi Shamir vorgestellt. An der Entwicklung des Feige-Fiat-Shamir-Protokolls war auch Uriel Feige beteiligt.
Das Verfahren arbeitet interaktiv, das heisst, es finden mehrere Runden zwischen Geheimnisträger und dem Prüfer statt. In jeder Runde kann die Kenntnis der Zahl zu 50 % bewiesen werden. Nach zwei Runden bleibt eine Restunsicherheit von 25 %, nach der dritten Runde nur noch 12,5 % usw. Nach n Runden beträgt die Restunsicherheit damit 2 − n.
Die Sicherheit des Fiat-Shamir-Protokolls beruht auf der Schwierigkeit Quadratwurzeln im Restklassenring zu berechnen. Diese Berechnung ist genauso schwer wie die Zahl n = pq (p, q sind Primzahlen) zu faktorisieren und damit praktisch nicht durchführbar.
[Bearbeiten] Protokoll
Beim Fiat-Shamir-Protokoll wird eine vertrauenswürdige dritte Partei benötigt. Diese veröffentlicht einen RSA-Modul n = pq, dessen Primfaktoren p und q sie geheimhält. Die Beweiserin (Geheimnisträgerin) Peggy wählt eine zu n teilerfremde Zahl s als persönliches Geheimnis, mit dem sie sich Victor (V wie Verifier) gegenüber authentisieren will. Diese darf sie niemanden weitergeben. Sie berechnet und registriert v als öffentlichen Schlüssel bei der dritten Partei.
Eine einzelne Runde im Fiat-Shamir-Protokoll besteht aus den folgenden Aktionen:
- Peggy wählt eine Zufallszahl r, berechnet und sendet x an Victor.
- Victor wählt zufällig ein und sendet dies an Peggy. Dabei gibt Victor zu verstehen, ob er erhalten möchte (e = 0) oder lieber (bei e = 1).
- Peggy berechnet und sendet y an Victor.
- Victor überprüft, ob gilt.
Dieses Protokoll ist noch nicht Zero-Knowledge, da es ein Bit Information über preisgibt: Würde Viktor auf irgendeine Weise erfahren, dass für eine Zahl c gilt, könnte er nach Ausführung des Protokolls sicher entscheiden, ob oder gilt; er hätte das fehlende Bit Information (das Vorzeichen von c bzw. r) also aus den Daten des Protokolls gewonnen.
Im Feige-Fiat-Shamir-Protokoll sendet Peggy im ersten Schritt entweder x oder an Victor. Die Wahl, welchen Wert sie sendet trifft sie zufällig. Viktor prüft dann im letzten Schritt, dass entweder oder gilt. Dadurch wird auch das Vorzeichen von c nicht preisgegeben und das Protokoll ist Zero-Knowledge.
[Bearbeiten] Quellen
- Albrecht Beutelspacher, Klaus-Dieter Wolfenstetter: Moderne Verfahren der Kryptographie. Vieweg, Braunschweig/Wiesbaden 1995, ISBN 3-528-06590-7, S. 47–49
- Amos Fiat, Adi Shamir: How to Prove Yourself: Practical Solutions to Identification and Signature Problems. In: Proceedings on Advances in Cryptology - CRYPTO '86. Springer-Verlag, 1987, ISBN 0-387-18047-8, S. 186–194