為什麼 WOTS 和 WOTS+ 是一次性方案?
我一直在閱讀基於散列的簽名方案,特別是 XMSS 以及底層的 Winternitz 方案(準確地說是 WOTS+)。
顧名思義,WOTS 和 WOTS+ 是一次性方案,因此使用相同密鑰簽署多條消息會洩露一些資訊。然而,我無法想出一種濫用它的方法,並希望有人能指出我正確的方向。具體來說,在我看來,校驗和可以防止我偽造簽名,即使兩條不同的消息是用相同的密鑰簽名的。為什麼不是這樣?
然而,我無法想出一種濫用它的方法,並希望有人能指出我正確的方向。具體來說,在我看來,校驗和可以防止我偽造簽名,即使兩條不同的消息是用相同的密鑰簽名的。為什麼不是這樣?
讓我們舉一個相當簡單的例子;考慮使用單個 WOTS 數字表示雜湊的情況(因此單個 WOTS 數字表示校驗和);對於這個例子,我們將有 $ W=16 $ .
我們簽名的第一條消息是雜湊值 2;這意味著我們發布 $ H^2(x) $ (在哪裡 $ x $ 來自私鑰),以及校驗和 14,我們將其發佈為 $ H^{14}(y) $ (在哪裡 $ y $ 也是來自私鑰)
現在,我們(使用相同的私鑰)對雜湊值 13 進行簽名;這意味著我們發布 $ H^{13}(x) $ 和校驗和 $ H^3(y) $ .
在這一點上,攻擊者有足夠的資訊來偽造(比如說)雜湊值 7。為此,他會採取 $ H^2(x) $ 來自第一個簽名的值(我們稱之為 $ a $ ) 併計算 $ H^5(a) $ ; 他會接受 $ H^3(y) $ 從第二個簽名(我們稱之為 $ b $ ) 併計算 $ H^6(b) $ . 這對 $ H^5(a), H^6(b) $ 等於 $ H^7(x), H^9(y) $ ,因此 7 的有效簽名也是如此,即使攻擊者不知道 7 的值是什麼 $ x $ 和 $ y $ 是。
這種攻擊很容易擴展到真正的 WOTS 系統(其中消息以多位數字表示),並且 WOTS+ 的修改(它為每個雜湊呼叫產生一個唯一值)實際上並沒有使攻擊者的工作變得更加困難。