Public-Key

動態簽名和零知識

  • September 6, 2015

我正在閱讀一些解釋動態簽名(也稱為線上/離線簽名)的文章。

原則是少數操作不依賴於我們要簽名的消息,因此這些值可以預先計算並用於將來對消息進行簽名。

讓我們看一個帶有 Schnorr 簽名的範例:

$ p $ 和 $ q $ 兩個素數,例如 $ q|(p-1) $

$ \alpha $ 秩序元素 $ q \bmod p $

$ \mathcal{H} $ 散列函式

$ s \in [1,q] $ 私鑰

$ \alpha^{-s} \bmod p $ 公鑰

消息的簽名 $ m $ :

  1. 隨機選擇 $ k \in [2, q-1] $
  2. 計算 $ r=\alpha^{r} \mod p $
  3. 計算 $ x = \mathcal{H}(m || r) $ .
  4. 計算 $ y = k - sx $

送情侶 $ (x,y) $ .

如前所述,我們注意到步驟 1. 和 2. 與消息無關 $ m $ 並且可以預先計算。

解釋了從零知識辨識方案派生的簽名算法最適合實現這種簽名。

為什麼考慮零知識對應用這種方法如此重要?

實際上,它與零知識並沒有真正的關係。

從任何公共硬幣三步辨識方案中,您可以使用所謂的 Fiat-Shamir 啟發式推導出安全簽名方案(在隨機預言模型中)。其中許多協議代表誠實驗證者零知識證明(如 Schnorr、GQ 等協議)。現在,每個這樣的方案都具有基本相同的結構(選擇隨機性、計算承諾、計算雜湊等),因此是前兩個步驟的預計算的候選者,正如您為 Schnorr 簽名所描述的那樣。

引用自:https://crypto.stackexchange.com/questions/28946