本文最后更新于:2023年1月11日 下午
                  
                
              
            
            
              
                
                奇异椭圆定义 
从代数上来说,如果椭圆曲线方程 y 2 = x 3 + A x + B y^2=x^3+Ax+B y 2 = x 3 + A x + B Δ = 4 A 3 + 27 B 2 = 0 \Delta=4A^3+27B^2=0 Δ = 4 A 3 + 2 7 B 2 = 0 x x x ( ( r 1 − r 2 ) ( r 1 − r 3 ) ( r 2 − r 3 ) ) 2 = − Δ ((r_1-r_2)(r_1-r_3)(r_2-r_3))^2=-\Delta ( ( r 1  − r 2  ) ( r 1  − r 3  ) ( r 2  − r 3  ) ) 2 = − Δ r 1 , r 2 , r 3 r_1,r_2,r_3 r 1  , r 2  , r 3  
两种奇异椭圆曲线 
接下来研究两种简单的奇异椭圆,本文主要就是对它们与其他域的同态进行讨论。
1.y^2=x^3 
针对这种椭圆曲线,是构造同态:
E ( K ) → K , ( x , y ) ↦ x y E(K)\rightarrow K , \quad (x, y) \mapsto \frac{x}{y}
 E ( K ) → K , ( x , y ) ↦ y x  
两边都为域K K K 
可以证明,如果 ( x 1 , y 1 ) + ( x 2 , y 2 ) = ( x 3 , y 3 ) (x_1,y_1)+(x_2,y_2)=(x_3,y_3) ( x 1  , y 1  ) + ( x 2  , y 2  ) = ( x 3  , y 3  ) t 1 + t 2 = t 3 t_1+t_2=t_3 t 1  + t 2  = t 3  t i = x i / y i t_i=x_i/y_i t i  = x i  / y i  
2.y^2=x^2(x+a) 
这种情况的同态稍微有点复杂。记 α 2 = a \alpha ^2=a α 2 = a 
ψ : ( x , y ) ↦ y + α x y − α x \psi :(x,y) \mapsto \frac{y+\alpha x}{y-\alpha x}
 ψ : ( x , y ) ↦ y − α x y + α x  
1.  如果 α ∈ K \alpha \in K α ∈ K ψ \psi ψ F p F_p F p  
2.  如果 α ∉ K \alpha \notin K α ∈ /  K E ( K ) ≃ { u + α v ∣ u , v ∈ K , u 2 − a v 2 = 1 } E(K) \simeq \{u+\alpha v|u,v\in K,u^2-av^2=1 \} E ( K ) ≃ { u + α v ∣ u , v ∈ K , u 2 − a v 2 = 1 } Q [ 2 ] Q[\sqrt2] Q [ 2  ] 
题目 
首先题目给出了一种运算,显然和椭圆曲线有关:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p = 193387944202565886198256260591909756041 lambda  x: pow (x, p-2 , p)def  add (A, B ):assert  u != w or  v == xif  u == w: 3 *u*w + 4 *u + 1 ) * i(v+x)else : 2 return  y % p, z % pdef  mul (t, A, B=0  ):if  not  t: return  Breturn  mul(t//2 , add(A,A), B if  not  t&1  else  add(B,A) if  B else  A)
注意到这里计算斜率的方式有一点不一样,在计算 2 P 2P 2 P y 2 = x 3 + A x + B y^2=x^3+Ax+B y 2 = x 3 + A x + B d y d x = 3 x 2 + A 2 y \frac{dy}{dx}=\frac{3x^2+A}{2y} d x d y  = 2 y 3 x 2 + A  d y d x = 3 x 2 + 4 x + 1 2 y \frac{dy}{dx}=\frac{3x^2+4x+1}{2y} d x d y  = 2 y 3 x 2 + 4 x + 1  y 2 = x 3 + 2 x 2 + x + C y^2=x^3+2x^2+x+C y 2 = x 3 + 2 x 2 + x + C 
然后题目用了一个随机数x x x P ( 4 , 10 ) P(4,10) P ( 4 , 1 0 ) m u l ( x , P ) mul(x, P) m u l ( x , P ) Q Q Q 
这里可以将 P P P C = 0 C=0 C = 0 y 2 = x 3 + 2 x 2 + x y^2=x^3+2x^2+x y 2 = x 3 + 2 x 2 + x y 2 = x 2 ( x + a ) y^2=x^2(x+a) y 2 = x 2 ( x + a ) x = x − 1 x=x-1 x = x − 1 
最后利用上述同态的方法,先求出 α \alpha α P , Q P,Q P , Q u = y P + α x P y P − α x P u=\frac{y_P+\alpha x_P}{y_P-\alpha x_P} u = y P  − α x P  y P  + α x P   v = y Q + α x Q y Q − α x Q v=\frac{y_Q+\alpha x_Q}{y_Q-\alpha x_Q} v = y Q  − α x Q  y Q  + α x Q   
值得注意的是,离散对数的解不只一个,需要计算 u u u 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 p = 193387944202565886198256260591909756041 3  + 2 *x^2  + x4 , 10 )65639504587209705872811542111125696405 , 125330437930804525313353306745824609665 )0 ] +1 , P[1 ])0 ] +1 , Q[1 ])193387944202565886198256260591909756040 ).square_root()1 ] + t*P_[0 ])/(P_[1 ] - t*P_[0 ]) % p1 ] + t*Q_[0 ])/(Q_[1 ] - t*Q_[0 ]) % pprint (v.log(u))