Feige-Fiat-Shamir Identification Scheme
From Wikipedia, the free encyclopedia
In cryptography, the Feige-Fiat-Shamir Identification Scheme is a type of parallel zero-knowledge proof developed by Uriel Feige, Amos Fiat, and Adi Shamir in 1988. Like all zero-knowledge proofs, the Feige-Fiat-Shamir Identification Scheme allows one party, Alice, to prove to another party, Bob, that she possesses secret information without revealing to Bob what that secret information is. The Feige-Fiat-Shamir Identification Scheme, however, uses modular arithmetic and a parallel verification process that limits the number of communications between Alice and Bob.
Contents |
[edit] Setup
Choose two large prime integers p and q and compute the product n = pq. Create secret numbers with gcd(si,n) = 1. Compute . Alice and Bob both receive n while p and q are kept secret. Alice is then sent the numbers si. These are her secret login numbers. Bob is sent the numbers vi. Bob is unable to recover Alice's si numbers from his vi numbers due to the difficulty in determining a modular square root when the modulus' factorization is unknown.
[edit] Procedure
- Alice chooses a random integer r, a random sign and computes . Alice sends this number to Bob.
- Bob chooses numbers where ai equals 0 or 1. Bob sends these numbers to Alice.
- Alice computes . Alice sends this number to Bob.
- Bob checks that .
This procedure is repeated with different r and ai values until Bob is satisfied that Alice does indeed possess the modular square roots (si) of his vi numbers.
[edit] Security
In the procedure, Alice does not give any useful information to Bob. She merely proves to Bob that she has the secret numbers without revealing what those numbers are. Anyone who intercepts the communication between each Alice and Bob would only learn the same information. The eavesdropper would not learn anything useful about Alice's secret numbers.
In an early version, the Fiat-Shamir-Scheme (on which the Feige-Fiat-Shamir-Scheme was based), one bit of information was leaked. By the introduction of the sign s even this bit was concealed resulting in a zero-knowledge-protocol.
Suppose Eve has intercepted Bob's vi numbers but does not know what Alice's si numbers are. If Eve wants to try to convince Bob that she is Alice, she would have to correctly guess what Bob's ai numbers will be. She then picks a random y , calculates and sends x to Bob. When Bob sends ai, Eve simply returns her y. Bob is satisfied and concludes that Eve has the secret numbers. However, the probablity of Eve correctly guessing what Bob's ai will be is 1 in 2k. By repeating the procedure t times, the probability drops to 1 in 2kt . For k = 5 and t = 4 the probability of successfully posing as Alice is less than 1 in 1 million.
[edit] References
- Wade Trappe, Lawrence C. Washington, Introduction to Cryptography with Coding Theory (Prentice-Hall, Inc., 2003), pp. 231–233.