Public-Key

創建新的安全橢圓曲線的過程是怎樣的?

  • December 7, 2018

我對 djb 用來提出他的 Curve 25519 的技術特別好奇。假設我已經寫下了我的目標,例如 - Twist Secure、Speed、Side Channel Resistance 等。在這種情況下,我該怎麼做去創造新的曲線?密碼學家/數學家是否使用特定算法?還是只是即興創作類似的作品?

正如您所說,您需要定義目標。您可以查看SafeCurves,這是 Bernstein 和 Lange 的聯合工作,用於幫助選擇/建構 ECDLP 難度和 ECC 安全性的橢圓曲線。請注意,如果您需要配對友好的橢圓曲線,則需要查看與嵌入度相關的其他標準。您可以閱讀Freeman 等人的這篇論文。適用於不同的建築。現在談到 Curve25519,Bernstein在他的論文中解釋了他的選擇。以下是他在一次演講中提到的一些要點:

  • Curve25519 有一個大的素數字元欄位,因為目前的 CPU 乘法器包括快速浮點乘法器,而擴展欄位用另一個乘法器大小懲罰 CPU。
  • Curve25519 具有蒙哥馬利形狀 $ y^2=x^3+Ax^2+x $ 用微小的 $ A \in 2+4\mathbb{Z} $ 因為可以做投影 $ x $ - 使用 1 欄位乘法將座標加倍和加法 $ (A-2)/4 $ , 4 個域平方和 5 個額外域乘法,無需 $ y $ 協調。
  • Curve25519 使用的素數非常接近 2 的冪。具體來說, $ 2^{255}-19 $ 而不是像 Solinas 素數 $ 2^{256}-2^{224}+2^{192}+2^{96}-1 $ 因為重複加法比乘以 19 的成本更高。
  • Curve25519 使用安全的順序曲線 $ 8 \times \text{prime} $ 以安全的方式扭轉 $ y^2=x^3+486662x^2+x $ 有秩序的 $ 4\times \text{primes} $ .
  • 這 $ A $ 被選擇使得 $ (A-2)/4 $ 是一個小整數,可以加快乘法速度 $ (A-2)/4 $ (這裡的公式),因此扭曲的曲線順序是 $ 4 \times primes $ 或者 $ 8 \times primes $ . 當時最小的正選擇是 358990、464586 和 486662。伯恩斯坦拒絕了 358990 和 464586,因為它們的主要因素之一略小於 $ 2^{252} $ 並討論一個應該如何處理與素數匹配的密鑰的理論可能性的問題比簡單地轉向最後一個選擇更難 $ A=486662 $ (我沒有袖手旁觀)。

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