Zero-Knowledge-Proofs
Fiat-Shamir 啟發式中的參數 c
根據Wiki,如果挑戰存在離散對數的非互動式零知識證明的可能性 $ c $ 是通過散列函式計算的。但是這樣做的目的是什麼 $ c $ ? 為什麼我總是不能設置 $ c=1 $ ? 它會使系統易受攻擊嗎?
它會使系統易受攻擊嗎?
是的; 如果證明者先驗地知道 $ c $ 這將被使用,證明者可以輕鬆地發布證明(即使她不知道離散對數)。
證明離散對數的知識 $ y $ 到基地 $ g $ , 證明者傳輸值 $ r $ 和 $ t $ ,並且驗證器檢查是否 $ t \equiv g^r y^c $ ; 如果證明者選擇了任意 $ r $ 併計算 $ t = g^r y^c $ ,並傳輸這些值,此檢查將驗證。
在真正的非互動協議中,這是行不通的,因為 $ c $ 是(除其他外)的複雜函式 $ t $ ,因此她不能隨意選擇 $ t $ 不影響價值 $ c $ .