Elliptic-Curves

曲線 25519 (X25519, Ed25519) 在蒙哥馬利曲線和扭曲的愛德華茲曲線之間轉換座標

  • January 8, 2020

我對蒙哥馬利曲線和扭曲愛德華茲曲線之間的 EdDSA 轉換座標有一些誤解。在https://www.rfc-editor.org/rfc/rfc7748我看到 Curve25519 的基點是

蒙哥馬利曲線:

U(P)  9
V(P)  14781619447589544791020593568409986887264606134616475288964881837755586237401

扭曲的愛德華茲曲線:

X(P)  15112221349535400772501151409588531511454012693041857206046113283949847762202
Y(P)  46316835694926478169428394003475163141307993866256225615783033603165251855960

然後我看到

The birational maps are:

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

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

但是如果我們嘗試轉換 $ (x,y) $ 至 $ (u,v) $ 或者 $ (u,v) $ 至 $ (x,y) $ 通過使用這些公式,我們不會得到正確的答案。例如將 y 座標轉換為 u 座標:

(1+46316835694926478169428394003475163141307993866256225615783033603165251855960)/(1-46316835694926478169428394003475163141307993866256225615783033603165251855960)

結果將不等於

14781619447589544791020593568409986887264606134616475288964881837755586237401

如何正確轉換蒙哥馬利曲線和扭曲愛德華茲曲線之間的座標?

這些公式確實有效。你只需要記住在整數模領域進行計算 $ 2^{255}-19 $ 並且實際上有兩個平方根,如果要獲得預期的結果,則需要使用正確的平方根。

您可以測試以下 SAGE 程式碼

gf=GF(2^255-19)
X_P = gf(15112221349535400772501151409588531511454012693041857206046113283949847762202)
Y_P = gf(46316835694926478169428394003475163141307993866256225615783033603165251855960)
u = (1+Y_P)/(1-Y_P) 
v = gf(-486664).sqrt()*u/X_P,-(gf(-486664).sqrt())*u/X_P
print u
print v

Sage Cell 伺服器上

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