Elliptic-Curves
曲線 25519 (X25519, Ed25519) 在蒙哥馬利曲線和扭曲的愛德華茲曲線之間轉換座標
我對蒙哥馬利曲線和扭曲愛德華茲曲線之間的 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