SPHINCS+ Hash Signature ADRS 結構如何定義
誰能幫我詳細說明 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 樹雜湊期間未使用。