Hash

SPHINCS+ Hash Signature ADRS 結構如何定義

  • July 27, 2020

誰能幫我詳細說明 ADRS 的結構,例如(樹 ADRS、層 ADRS、密鑰對 ADRS 等)用於生成根 SPHINCS+ 簽名。也有人可以幫助我用範例描述 SPHINCS+ 中使用的樹雜湊過程。

嗯,ADRS 結構是一個 32 字節結構,組織為 8 個 4 字節字。看起來像:

 +--------------------+
 |   Layer address    |
 +--------------------+
 |    Tree address    |
 |      (3 words)     |
 |                    |
 +--------------------+
 |        Type        |
 +--------------------+
 |  Keypair address   |
 +--------------------+
 | Chain/Tree Height  |
 +--------------------+
 | Hash addr/Tree Idx |
 +--------------------+

ADRS 結構背後的想法是,Sphincs+ 中的每一個雜湊計算都會獲得一個單獨的 ADRS 結構。由於 ADRS 結構是雜湊的輸入,因此暴力破解雜湊計算的人需要選擇 ADRS 結構,這意味著他們的暴力搜尋無法利用任何多目標攻擊。

至於 ADR 結構中的各個欄位指定的內容:

層地址 - 我們正在處理的 Merkle 樹級別(0 是最低的);如果我們在 FORS 樹中工作,也是 0

樹地址 - 我們正在處理此級別中的哪個 Merkle 樹(從左側數)。這用於 FORS、WOTS 和 Merkle 樹雜湊。

類型 - 說明我們為什麼首先進行此雜湊;這確保了,比如說我們為 FORS 做的雜湊不會與我們為 WOTS 做的雜湊衝突

密鑰對地址 - 我們正在處理哪個 WOTS 葉子(從 Merkle 樹的左側開始計數)。在 Merkle 樹雜湊期間不使用。

鏈條/樹高 - 在 WOTS 期間,我們正在開發的 Winternitz 鏈條。在 FORS 期間,我們在 FORS 樹中的高度(1 為底部)。在 Merkle 樹雜湊期間未使用。

Hash addr/Tree Idx - 在 WOTS 期間,我們在 Winternitz 鏈的哪個位置(0 是鏈中的第一個節點)。在 FORS 期間,我們正在計算的節點的水平位置(計算目前 WOTS 葉下的所有 FORS 樹);後者既包括“我們在 FORS 樹中的水平位置”,也包括“這是哪棵 FORS 樹”。在 Merkle 樹雜湊期間未使用。

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