XMSS 的公鑰和簽名大小是多少?
這是我最近的一個問題的後續行動。
我正在尋找 XMSS 簽名方案的公鑰和簽名大小,根據 XMSS 參數(長度 $ \ell $ , 高度 $ h $ 和安全參數 $ n $ )。我發現以下 2 篇論文的答案相互矛盾,我很困惑。
pg.5 上的原始XMSS 論文說:
XMSS 公鑰的位長為 $ (2(h+ \left \lceil log \ell \right \rceil) + 1)n $ , XMSS 簽名有長度 $ (\ell+h)n $ (…)
最近關於 pg.6 的一篇論文說公鑰的長度為 $ 4 + 2n $ 並且簽名大小是 $ 4+n(\ell+h+1) $
有人可以解釋一下這兩者中哪一個是真的,為什麼?
最初的 XMSS 論文(eprint 2011/484)討論了舊版本的 XMSS,它確實使用了更大的公鑰(我懷疑他們的簽名大小略有錯誤 - 他們忘記了簽名的 idx_sig 部分,該部分指定了他們指定哪個 WOTS+ 葉’正在使用)。
XMSS RFC定義了一個更新的版本,具有相當小的公鑰(和稍大的簽名)。您引用的最新 XMSS/LMS 比較論文(eprint 2017/349)使用 XMSS 的 RFC 版本進行比較。
我相信 RFC 中定義的版本是人們通常使用的版本,因此比較文件中的值是準確的。
至於 XMSS 的原始版本和 RFC 之間的區別,主要區別在於:在原始論文中,使用儲存在公鑰中的遮罩來提供隨機化;這樣做的問題是,因為它們在 Merkle 樹的不同部分使用相同的遮罩,這使它們容易受到多目標原像攻擊。在 RFC 版本中,它們動態計算遮罩(因此它們不需要在公鑰中)。因為現在每個遮罩都不同,所以不適用多目標原像攻擊(以動態生成遮罩所需的計算為代價)。
一個更小的區別是 RFC 版本在簽名中包含一個隨機化器“r”(與消息一起散列);使這個隨機化器不可預測意味著我們不依賴於雜湊函式的抗碰撞性(鑑於我們在其他任何地方都依賴原像或第二個原像抗性,這是一個勝利)。