Signature

Merkle 簽名中的活板門是什麼?

  • November 22, 2013

Merkle 簽名(第 40 頁)使用比公鑰(驗證密鑰)Merkle 樹的根和比私鑰(簽名)的一組原像 $ g(Y_i) $ 在哪裡 $ Y_i $ 是選擇一次簽名的驗證密鑰。我的問題是這兩個鍵之間的活板門是什麼?

正如我在這個答案中已經概述的那樣,雜湊樹與任何一次性簽名方案相結合提供了所謂的 Merkle 簽名方案。我認為存在一些誤解,因此我隨後繪製了 merkle 簽名:

這個想法是生產 $ n $ 密鑰對 $ (X_i,Y_i) $ 的一次性簽名方案,然後取散列值 $ g(Y_i) $ 的公鑰 $ Y_i $ (在哪裡 $ g:{0,1}^*\rightarrow {0,1}^n $ 是您參考中描述的加密雜湊函式)並分配雜湊值 $ g(Y_i) $ 到一棵完全二叉樹的葉子 $ n $ 樹葉。

然後,您遞歸地計算雜湊樹(通過計算內部節點的雜湊值作為子節點串聯的雜湊值),最後作為根雜湊,您獲得“公鑰”,然後將其提供給接收者。我們稱這個公鑰 $ PK $ 並觀察這是一個“虛擬”公鑰,因為它不直接用於一次性簽名方案的簽名驗證(我很快就會回來)。私鑰是 $ (X_1,\ldots,X_n) $ ,即一次性簽名方案的簽名密鑰序列。

那麼這個公鑰 $ PK $ 允許驗證 $ n $ 一次性簽名。這些一次性簽名中的每一個都是使用私有簽名密鑰生成的 $ X_i $ 的一次性簽名方案。

現在,基本思想是您使用簽名密鑰 $ X_i $ 為了 $ i $ ’th 簽名和 $ i $ ‘消息的簽名 $ m_i $ 由…組成:

  • 簽名 $ \sigma_i $ 通過簽署獲得 $ m_i $ 使用所選擇的一次性簽名方案和簽名密鑰的簽名算法 $ X_i $ .
  • 認證路徑 $ A_i $ 在休假的雜湊樹中 $ i $ 帶標籤 $ g(Y_i) $ . 這條路徑由葉子的唯一路徑上的所有兄弟姐妹組成 $ g(Y_i) $ 到根。這允許您給定公鑰 $ Y_i $ 需要驗證一次性簽名 $ m_i $ , 重新計算雜湊樹的根雜湊(即公鑰 $ PK $ ) 並將其與公鑰進行比較 $ PK $ 你收到的。

一個簽名 $ s $ 留言 $ m_i $ 那麼是 $ s=(i,\sigma_i,Y_i,A_i) $ . 請注意,當給定 $ (s,m_i) $ 並且擁有 $ PK $ ,用於驗證一個檢查是否:

  • $ \sigma_i $ 是一個有效的一次性簽名 $ m_i $ 在公鑰下 $ Y_i $
  • 以及使用散列公鑰重新計算散列樹 $ g(Y_i) $ (通過擁有公鑰 $ Y_i $ 從簽名 $ s $ ) 和認證路徑 $ A_i $ 導致根雜湊等於 $ PK $ .

我希望這能回答您的問題,並且您會看到沒有涉及的活板門 $ g $ 和 $ Y_i $ . 本質上,雜湊樹是用來聚合的 $ n $ 將一次性簽名方案的公鑰轉換為單個“虛擬”公鑰 $ PK $ . 因此,這個公鑰 $ PK $ 允許驗證 $ n $ 簽名。價值觀如何 $ X_i $ 和 $ Y_i $ 是否相關取決於使用的​​一次性簽名方案,但與雜湊樹無關。

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