Elliptic-Curves

哪些標量會在 X25519 的蒙哥馬利階梯中產生錯誤的值?

  • July 20, 2018

這個問題是一個關於在蒙哥馬利空間中乘以一個扭曲的 Etwards 點的老問題的結果。事實證明,這在某些情況下是不安全的。

以下在ref10 實現中實現的蒙哥馬利階梯是不安全的:當標量為零時,乘法的結果不是零點,而是具有低階的點。這在我的加密庫中導致了一個嚴重的安全漏洞。

因此,我決定不使用蒙哥馬利階梯進行簽名驗證。雙標量乘法(具有合併的加倍和滑動視窗)更快並且不需要太多程式碼。但是,我仍然想使用蒙哥馬利階梯進行簽名和公鑰生成。

我的問題是,它安全嗎?

公鑰生成將基點乘以一個隨機的修剪標量。修整過程與 X25519 相同:設置位 254,清除位 0、1、2 和 255。我猜蒙哥馬利階梯在這種情況下會無條件地產生好的結果,因為 X25519 公鑰生成也是如此。那正確嗎?

簽名仍然乘以基點,但在執行標量乘法之前它們不會修剪標量。相反,它們從一個不同於零的散列開始,並且該散列以 L 為模(曲線的階數)減少。基本上,我們乘以一個介於 0(yikes)和 L-1 之間的隨機數。

我相信我們偶然乘以零的可能性微乎其微(類似於 2⁻²⁵²)。我們可以檢查一個全零輸入,但這看起來有點過頭了。我擔心的是其他特殊值。蒙哥馬利階梯是否會在除零之外的任何其他值上失敗?這些值是否低於 L?

實際上,答案是否定的。一切正常,並產生正確的結果。

轉換回 Twisted Edwards 空間時會出現潛在問題,這是一個不同的問題。

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