# Feige–Fiat–Shamir identification scheme

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, it allows one party, Peggy, to prove to another party, Victor, that she possesses secret information without revealing to Victor 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 Peggy and Victor.

## Setup

Choose two large prime integers p and q and compute the product n = pq. Create secret numbers ${\displaystyle s_{1},\cdots ,s_{k}}$ coprime to n. Compute ${\displaystyle v_{i}\equiv s_{i}^{2}{\pmod {n}}}$. Peggy and Victor both receive ${\displaystyle n}$ while ${\displaystyle p}$ and ${\displaystyle q}$ are kept secret. Peggy is then sent the numbers ${\displaystyle s_{i}}$. These are her secret login numbers. Victor is sent the numbers ${\displaystyle v_{i}}$ by Peggy when she wishes to identify herself to Victor. Victor is unable to recover Peggy's ${\displaystyle s_{i}}$ numbers from his ${\displaystyle v_{i}}$ numbers due to the difficulty in determining a modular square root when the modulus' factorization is unknown.

## Procedure

1. Peggy chooses a random integer ${\displaystyle r}$, a random sign ${\displaystyle s\in \{-1,1\}}$ and computes ${\displaystyle x\equiv s\cdot r^{2}{\pmod {n}}}$. Peggy sends ${\displaystyle x}$ to Victor.
2. Victor chooses numbers ${\displaystyle a_{1},\cdots ,a_{k}}$ where ${\displaystyle a_{i}}$ equals 0 or 1. Victor sends these numbers to Peggy.
3. Peggy computes ${\displaystyle y\equiv rs_{1}^{a_{1}}s_{2}^{a_{2}}\cdots s_{k}^{a_{k}}{\pmod {n}}}$. Peggy sends this number to Victor.
4. Victor checks that ${\displaystyle y^{2}\equiv \pm \,xv_{1}^{a_{1}}v_{2}^{a_{2}}\cdots v_{k}^{a_{k}}{\pmod {n}}}$ and that ${\displaystyle x\neq 0.}$

This procedure is repeated with different ${\displaystyle r}$ and ${\displaystyle a_{i}}$ values until Victor is satisfied that Peggy does indeed possess the modular square roots (${\displaystyle s_{i}}$) of his ${\displaystyle v_{i}}$ numbers.

## Security

In the procedure, Peggy does not give any useful information to Victor. She merely proves to Victor that she has the secret numbers without revealing what those numbers are. Anyone who intercepts the communication between each Peggy and Victor would only learn the same information. The eavesdropper would not learn anything useful about Peggy's secret numbers.[citation needed]

Suppose Eve has intercepted Victor's ${\displaystyle v_{i}}$ numbers but does not know what Peggy's ${\displaystyle s_{i}}$ numbers are. If Eve wants to try to convince Victor that she is Peggy, she would have to correctly guess what Victor's ${\displaystyle a_{i}}$ numbers will be. She then picks a random ${\displaystyle y}$, calculates ${\displaystyle x\equiv y^{2}v_{1}^{-a_{1}}v_{2}^{-a_{2}}\cdots v_{k}^{-a_{k}}{\pmod {n}}}$ and sends ${\displaystyle x}$ to Victor. When Victor sends ${\displaystyle a_{i}}$, Eve simply returns her ${\displaystyle y}$. Victor is satisfied and concludes that Eve has the secret numbers. However, the probability of Eve correctly guessing what Victor's ${\displaystyle a_{i}}$ will be is 1 in ${\displaystyle 2^{k}}$. By repeating the procedure ${\displaystyle t}$ times, the probability drops to 1 in ${\displaystyle 2^{kt}}$ . For ${\displaystyle k=5}$ and ${\displaystyle t=4}$ the probability of successfully posing as Peggy is less than 1 in 1 million.