以上的洞穴模型只能當作ZKP的入門概念而已,那麼實際該如何將ZKP發揮出來呢?
Fiat-Shamir協定利用在mod(N=pq)中開根號很難這件事來設計ZKP(其複雜度與質因數分解相同)
數字N=pq是一個公開資訊,p和q都是質數(不公開)
Alice知道一個秘密S,該秘密的平方 也是公開
Alice必須說服Bob她知道S,但是不會洩漏任何S的資訊
該協定如下
如果大家都有按照協定走,最後一條式子會是對的,因為
那麼至於這個協定能否讓不知道S的Trudy騙過Bob呢?
同樣Trudy先產生r,計算x後,傳給Bob
Bob將寄送挑戰e回來
這裡的關鍵在於,Bob每次的挑戰e都要是隨機,如此Trudy的這套把戲再怎麼厲害,也敵不過機率的考驗
會發現一定要是懂S的人,才可以每次都通過認證