# Girault’s identification protocol ## Definition - This scheme is a zero-knowledge proof for a discrete logarithm, like [Schnorr’s protocol](https://hackmd.io/VtTLrLEoQPavPPoK_gz8VQ), but over a composite modulus instead of a prime modulus. - **Goal:** $\textbf{Prover}$ convinces $\textbf{Verifier}$ that they know $x$ such that $h = g^{-x} \bmod N$ ## Key Components: - **Public input :** $h, N$ and a high order generator $g \in Z^{*}_{N}$ - **Private input :** $\textbf{Prover}$ knows the secret $x \in [S]$ - **Security parameters :** The parameters $k, k', S$ and $R = 2^{k+k'+|S|}$ ## Interactive Protocol ![image](https://hackmd.io/_uploads/SkEWaW3Ikg.png) - **Security note :** The interactive identification protocol assumes an honest verifier and should not be used in the context of malicious verifiers. A malicious verifier can send $e = R$ and recover the secret $x$ by dividing $z$ by $e$ ([Too Honest challenge](https://cryptohack.org/challenges/zkp/)) ## Non-Interactive Protocol: ![image](https://hackmd.io/_uploads/By34Cb38ye.png) ## Choice of parameter values - $|N| = 2048$ - $S = 2^{256}$ - $k, k' = 128$ ## References - https://www.zkdocs.com/docs/zkdocs/zero-knowledge-protocols/girault-identification/