Eddsa

用輔因子驗證的理由2C2C2^c在 EdDSA 中?

  • September 5, 2021

更多曲線的 EdDSA描述了簽名驗證的兩個選項

  • 驗證,檢查 $ 2^c,S,B,=,2^c,R+2^c,H(\underline R,\underline A,M),A $
  • 無輔因子驗證,檢查 $ S,B,=,R+H(\underline R,\underline A,M),A $

無輔驗證更為嚴格:“任何通過無輔驗證的所謂簽名也將通過驗證”,但“在正常簽名程序之外使用密鑰的簽名者可以創建通過驗證而不通過無輔驗證的字元串”。

那麼,使用輔因子進行第一種驗證的基本原理是什麼 $ 2^c $ ? 如果是這樣,為什麼它會更快/更簡單?


更新:在查看了這個答案和它的參考資料之後,我想知道是否定義了Verification¹的唯一原因是它包含以下內容

命題:如果一組簽名通過了批量驗證,那麼每個簽名都通過驗證¹,具有加密確定性(包括簽名者是否故意弄亂或對手是否修改簽名)。

這個提議是真的嗎?什麼是證明?如果Verification被定義為Cofactorless 驗證,為什麼它不成立?

使用輔因子進行驗證還有其他原因嗎?就像Daniel J. Bernstein、Niels Duif、Tanja Lange、Peter Schwabe 和 Bo-Yin Yang的高速高安全簽名第 5 節中的快速單一簽名驗證,在CHES 2011 的程序中)?


¹上述定義的驗證,即使用輔因子 $ 2^c $ .

想像“更嚴格”在某種程度上更強是有缺陷的。實際上 ed25519-dalek 的 verify_strict 方法就犯了這個錯誤。

有許多似是而非的驗證方法,它們都基於相同的 ed25519 密鑰對定義了有效的簽名方案。您會在https://eprint.iacr.org/2020/1244https://hdevalence.ca/blog/2020-10-04-its-25519am中找到它們的描述

然而,這些方案中幾乎沒有一個與批量 ed25519 簽名驗證完全一致,因為批量驗證隨機取消了一些輔因子調整。

如果您在共識協議中使用 ed25519,例如區塊鏈上的帳戶,那麼您將需要與單個 ed25519 驗證完全一致的批量 ed25519 驗證。在這種情況下,您應該使用 ZCash 的 ed25519 crate ed25519-zebra。Afaik,所有其他 ed25519 實現都表現出批量驗證和單次驗證之間的差異(截至 2021 年 3 月)。

我懷疑 TLS 會採用輔因子清除驗證,部分原因是無輔因子驗證的執行速度略快於輔因子清除驗證。事實上,TLS 已經可以批量驗證 ed25519,因為從來沒有第三方檢查共識協議中的 TLS 握手。我想 CA 可以頒發一個僅在某些客戶端上間歇性工作的證書。

這是我的一些猜測。

輔因子驗證方案似乎起源於RFC 8032。儘管引用了常用的 Edwards 曲線作為 EdDSA 的合適實例,但符號和驗證算法是單獨定義(並且在之前)熟悉的 Edwards 曲線。標准設計者在使標準向前兼容時具有防禦意識並不罕見,我懷疑他們想要一種簽名驗證方法,該方法在使用基點生成未來理想曲線的情況下仍然有效 $ B $ 位於輔因子子組(例如全橢圓曲線組)中。這樣一個 $ B $ 感覺像一個壞主意(認為未來的發展可能會導致重新考慮)並且被規範的其他部分阻止。RFC 第 3 節中規範的相關位是參數 9。 $ B!=(0,1) $ (身份),但只是隱含地註意到 $ B $ 指定參數 10 時應該是素數。 $ \ell $ 這樣 $ \ell B=0 $ (此標識未在其他地方使用或評論)。目前尚不清楚這一點是否經過深思熟慮。

值得注意的是,當為普通曲線指定驗證時,允許無輔因子驗證,但在一般情況下(第 3.4 節)則不允許。

那麼我最好的猜測是,人們實施輔助驗證以符合 RFC(當有疑問時,標準合規性會減少訴訟),並且 RFC 指定輔助驗證是為了與未來 Edwards 曲線上看似不明智的基點選擇向前兼容。

可以設想一種特別以優化為重點的實現,其中特定的 $ B $ 具有最佳座標的恰好位於一個輔因子子組中。如果可以在不重寫每個人的程式碼的情況下完全使用它,那就太好了。

編輯(29/3):協同驗證方案似乎確實早於 RFC,並且可以追溯到最初的 Bernstein 等人。紙補充。這篇論文分享了令人沮喪的描述 $ \ell B=(0,1) $ 作為條件 $ \ell $ . 但是,我能想到的輔助驗證的唯一原因是處理 $ B $ , $ R $ , 和 $ S $ 現在或將來在子組之外(它並不是真的更快或更簡單)。對於擁有簽名密鑰的人來說,生成通過輔助驗證但不是無輔助驗證的簽名非常簡單;這將使支持這兩種方案的環境變得危險。

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