Elliptic-Curves

Ed25519 到 X25519 運輸

  • February 12, 2022

使用

montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p

可以將愛德華茲曲線點(Ed25519公鑰)傳輸到蒙哥馬利曲線。Ed25519如果公鑰無效,它是否有任何副作用,例如在小子組或無效曲線攻擊的情況下?

如果是,那麼正確處理該問題的最佳解決方案是什麼?

Curve25519 和 Ed25519

在場上定義的蒙哥馬利曲線 $ K $ 定義為;$$ M_{A,B}: Bv^2 = u^3 + Au^2 + u $$ 對於某些 $ A,B \in K $ 與 $ B(A^2-4) \neq 0 $ .

Curve25519使用素數 $ q = 2^{255} − 19 $ 形成有限域 $ \mathbb{F}_q $ 並首先為 ECDH 定義,後來命名為X25519。蒙哥馬利方程是$$ v^2 = u^3+486662 u^2+u $$和 $ 486664 $ 是一個正方形 $ \mathbb{Z}_p $ ,即它是二次殘差(QR)。 $ u = 9 $ 已選為基點。Weierstrass 形式(需要 SageMath)

$$ y^2 = x^3 + A x + B $$

這條曲線“Curve25519”在雙理上等價於 $ \mathbb{Z}_p $ 愛德華茲曲線Ed25519 $$ x^2 + y^2 = 1 + (121665/121666)x^2y^2 $$和;

$$ x = \frac{\sqrt{486664}u}{v}, \quad y = \frac{(u − 1)}{(u + 1)} $$

反過來是操作是;

$$ u = \frac{(y + 1)}{(1 - y)}, \quad v = \frac{\sqrt{486664}u}{x} $$

愛德華形式具有同構曲線

$$ -x^2 + y^2 = 1 - (121665/121666)x^2y^2 $$自從 $ -1 $ 是 QR 在 $ \mathbb Z_p $


問題

montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p 可以將愛德華茲曲線點(ed25519 公鑰)傳輸到蒙哥馬利曲線。

是的,如上所述,從蒙哥馬利到愛德華茲$$ u = \frac{(y + 1)}{(1 - y)} $$

如果 ed25519 公鑰無效,它是否有任何副作用,例如小子組或無效曲線攻擊?

Edward25519 密鑰可以轉換為 Curve25519,如果密鑰已經由合法使用者負責建構

  • 假設合法使用者生成獨立的統一隨機密鑰。例如,使用者可以生成 32 個統一的隨機字節,清除第一個字節的第 0、1、2 位,清除最後一個字節的第 7 位,並設置最後一個字節的第 6 位。

在集合定義中,我們希望 X25519 的密鑰為

$$ {n: n \in 2^{254} +8{0,1,2,\dots,2^{251}-1 }}, $$換句話說,選擇一個統一的隨機數 $ [0,2^{251}-1] $ 乘以 $ 8 $ 比添加 $ 2^{254} $ .

基點的順序是(little-endian);

edd3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010

清算 $ 0,1,2 $ 確保

  • 我們不是一個攻擊者利用 DHKE 並最多洩露資訊的小組 $ \lceil log_2 h\rceil $ 位(輔因子 $ h=8 $ 在曲線 25519 中)。
  • 並且清除 7 和設置 6 是針對可能的計時攻擊

下面是最大值(little-endian),我們可以看到有兩個私鑰可以有相同的公鑰,但是,這是一個可以忽略但可以發現的事件。

0x8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7

那麼就沒有必要了,因為如果合法使用者已經使用了規則,雙有理等價將產生具有不小的順序的點。

在 Curve25519 和 edwards25519 雙有理等價下,每個 X25519 公鑰對應兩個可能的 Ed25519 公鑰)。X25519 僅使用 $ x $ 座標(名稱的來源)和Ed25519使用點的座標。當我們只有 $ x $ 一個點的座標,有兩個可能的點 $ (x,y) $ 和 $ (x,-y) $ 除了 $ y=0 $ .

如果是,那麼正確處理該問題的最佳解決方案是什麼?

驗證點沒有危險。


一些額外的

使用相同的密鑰

我不能直接說這是不安全的,但是,我們的一般規則是不要將相同的密鑰用於不同的目的。直到有人證明沒有危險讓自己遠離將相同的密鑰用於不同的目的。

對於 X25519 和 Ed25519,最好使用一個統一的隨機 256 位密鑰並使用 HKDF-expand 派生兩個密鑰。

X25519

請記住,公鑰是固定的,當您執行 DHKE 時,這意味著您擁有靜態靜態 DHKE。這沒有前向保密。更好的是 Signal 協議的作用;雙棘輪,您可以使用 Ed25519 簽署新的公鑰。

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