Thuật toán xác định vành các tự đồng cấu

Một phần của tài liệu PHÉP NHÂN PHỨC TRONG LÝ THUYẾT ĐƯỜNG CCONG ELLIPTI (Trang 49 - 56)

3 Vành các tự đồng cấu của đường cong elliptic

3.2 Thuật toán xác định vành các tự đồng cấu

Trước hết chúng ta cần hai thuật toán sau:

Thuật toán 3.4 (Tìm thành phần 2r trong phân tích của c = [O : Z[π]], với 2 | [OK :

Z[π]]).

Input: E là đường cong elliptic trên trường hữu hạn Fp, r2 là số mũ của l =2 trong phân tích của m = [OK : Z[π]]. Output:r ∈ Nmà 2r |[O :Z[π]] và 2r+1 -[O: Z[π]]. 1. Đặt Φ2(X,Y):=Y3+ (−X2+1488X−162000)Y2 +(1488X2+40773375X+8748000000)Y +(X3−162000X2+8748000000X−157464000000000 Với i = 1, 2 thì làm các bước (2)..(12). 2. stop:=false; j(E0) :=j(E);ri =0; 3. Φ(X) :=Φ2(X,j(E0));

Nếu Φ(X) có một nghiệm (mod p) thì r:=0; 4. RETURN(r); Nếu không thì 5. Đặt j(E1i):=nghiệm thứ i của Φ(X) (j(E11) 6=j(E12)); 6. Đặt j0 := j(E0); 7. Đặt ri :=ri+1; # Xây dựng dãy j(Er): Lặp 8. Φ(X) :=Φ2(X,j(Eri));

Nếu Φ(X) có đúng một nghiệm (mod p) thì 9. stop:=true;

Nếu không thì

10. Đặt j(Eri+1) :=nghiệm củaΦ(X)6=j0; 11. Đặt j0 := j(Eri);

12. Đặtri :=ri+1;

13. r:= min (r1,r2);

14. Nếu r>r2thì RETURN (r2); Nếu không thì RETURN(r);

Thuật toán 3.5 (Tìm thành phầnlr trong phân tích của c= [O :Z[π]], với 26=l | [OK : Z[π]]).

Input: E là đường cong elliptic trên trường hữu hạn Fp, k là số là số mũ của số nguyên tố lẻ l trong phân tích của m = [OK : Z[π]].

Output:r ∈ Nmà lr |[O :Z[π]] và lr+1 -[O: Z[π]]. (Đã biết số nguyên a sao cho OK =Z[π−a

m ]). 1. r:=0;

Lặp

2. r :=r+1;a0 :=a mod lr;

3. Tính h(X) ≡(Xp−X).ψ2a0(X) +ψa0+1.ψa0−1(X) mod ψlr(X)

Nếu h(X) 6=0 thì 4. r :=r−1;stop:=true;

Cho đến khi r=k hoặc stop;(Kết thúc vòng lặp)

5. RETURN(r);

Tổng hợp hai thuật toán trên, chúng ta có thuật toán tính chỉ số của vành tự đồng cấu, một bước quan trọng để chỉ ra dạng của vành tự đồng cấu.

Thuật toán 3.6 (Chỉ số của vành các tự đồng cấu) . Input: E là đường cong elliptic trên Fp.

Output: f ∈N mà [OK : OE] = f.

1. Tính vết t của tự đồng cấu Frobenius.

2. Tính biệt thức của order Z[π]: d:=t2−4p; 3. Đặt K =Q(√

D), trong đó D là ước của d và D không chứa nhân tử chính phương nào. Tính biệt thức của order cực đại OK của K.

Chỉ số m= [OK : Z[π]] =√

d/DK; Nếu DK mod 4 = 0 thì a:=t/2;

Nếu DK mod 4 = 1 thì a:= (t+m)/2;

4. c :=1; phân tích thành các thừa số nguyên tố m =∏ls; Với l là ước nguyên tố của m

6. Nếu l lẻ thì sử dụng thuật toán 3.5 tính được r; c :=c.lr; 7. f :=m/c;RETURN(f);

Nhận xét 3.7 Sau khi tính được chỉ số [O: Z[π]] =c, chúng ta có thể xác định dạng củaO. Với a là số nguyên xác định ở trong phần trước thì π−a

m là một số nguyên đại số nên π−a c cũng là một số nguyên đại số vì c | m. Như vậy ta có

Z[π−a c ] : Z[π] =c. Do đó vành tự đồng cấu cần tìm là: O =Z[π−a c ].

Ví dụ 3.8 Xét đường cong elliptic E trên F271 có phương trình Weierstrass: y2= x3+81x+54.

Có #E(F271) = 252, vết t = 20. Khi đó vành các tự đồng cấu OE là một order trong trường toàn phương ảo K =Q(√

−19), order cực đại OK có biệt thức DK = −19. Như vậy, gọi π là tự đồng cấu Frobenius thì: OK :Z[π] = s t2−4p DK =6. Phân tích 6 thành tích các thừa số nguyên tố: 6=2.3.

Bước 1: Tìm luỹ thừa của 2 trong chỉ số c =OE : Z[π].

Tính được j-bất biến của E bằng 79.

Đa thức môđula Φ2(x, 79) có đủ 3 nghiệm trong F271 là: 3, 28, 252. Xây dựng hai dãy các j-bất biến của các đường cong đẳng giống:

jE0 =79,jE1 =3.

jE00 =79,jE10 =28.

Ta thấyΦ2(x, 3),Φ2(x, 28)đều có duy nhất nghiệm trongF271. Như vậy ta thu được trong phân tích của c chứa 21.

Bước 2: Tìm luỹ thừa của 3 trong chỉ số c =

OE : Z[π]

.

Số nguyên a thoả mãn điều kiện trong thuật toán là 13. Lấy a0 =1≡13 (mod 3). Khi đó tính được:

hr(x) = x271−x, ψ3(x) = 3x4+215x2+106x+214.

Ta thấy hr(x) (mod ψ3(x)) =0. Vậy trong phân tích của c chứa 31. Tổng kết lại, tìm được c=6, do đó OE =OK.

Ví dụ 3.9 Xét đường cong elliptic E trên F271 có phương trình Weierstrass: y2 =x3+70x+137.

Có #E(F271) = 252, vết t = 20. Khi đó vành các tự đồng cấu OE là một order trong trường toàn phương ảo K =Q(√

−19). Hoàn toàn tương tự như ví dụ trên, ta tìm được c =2, tức là chỉ số [OK :OE] = 6/2=3 và: OE =Z[π−a c ] = Z+Z.1+3 √ −19 2 .

Các lệnh cho đường cong elliptic E trên trường hữu hạn.

Với các thuật toán đã trình bày ở trên và một số thuật toán trong [11] như: cộng điểm, tìm bậc của một điểm trên đường cong, tìm số điểm của đường cong theo thuật toán Baby-step, Giant-step, chúng tôi giới thiệu một số chương trình tính toán viết trên Maple 10 cho đường cong elliptic Etrên trường hữu hạn.

1. Cộng hai điểm trong E(Fp).

ChoP(x1,y1)và Q(x2,y2)trên E(Fp):y2=x3+Ax+B, tính(x3,y3) = P+Q.

Ý tưởng: Chúng ta dựa vào định nghĩa luật cộng trong [11] để đưa ra thuật toán. Input: A,B∈ Z;P(x1,y1),Q(x2,y2) ∈ E(Fp).

Output:[x3,y3].

Câu lệnh gọi: add_points_Fp(A,B,[x1,y1],[x2,y2],p).

Ví dụ 3.10 >add_points_Fp(-10,21,[58,164],[56,339],557); Kết quả: [162,24].

2. Phép tính bội của một điểm trên đường cong.

Ý tưởng: Xem [11, 2.2], khai triểnk theo hệ nhị phân, sau đó tính: 2P = P+P,

4P =2P+2P,...

Input: A,B∈ Z,k ∈ Z+,P = [x,y] ∈ E(Fp). Output:kP.

Câu lệnh gọi: mul_points_Fp(A,B,k,[x,y],p);

Ví dụ 3.11 >mul_points_Fp(-10,21,558,[2,3],557); Kết quả: [418,33].

3. Tìm bậc của một điểm trên đường cong E(Fp).

Ý tưởng: Dựa thuật toán Baby Step, Giant Step, xem [11]. Input: A,B∈ Z,P= [x,y]∈ E(Fp).

Output: Bậc của PtrênE.

Câu lệnh gọi: order_Fp(A,B,[x,y],p);

Ví dụ 3.12 >order_Fp(-10,21,[2,3],557); Kết quả: 189.

4. Tính số điểm của một đường cong E(Fp).

Ý tưởng: Dựa thuật toán Baby Step, Giant Step, xem [11]. Input: A,B∈ Z, số nguyên tố p.

Output: Số điểm củaE(Fp).

Câu lệnh gọi: num_points_Fp(A,B,p);

Ví dụ 3.13 >num_points_Fp(-10,21,557); Kết quả: 567.

5. Tính vết của E(Fp).

Ý tưởng: Dựa vào công thứct = p+1−N. Input: A,B∈ Z, số nguyên tố p.

Output: Vết củaE(Fp).

Câu lệnh gọi: traceEp(A,B,p).

Ví dụ 3.14 >traceEp(-10,21,557); Kết quả: -9.

6. Tính đa thức chia bậcncủa đường cong E(Zp).

Ý tưởng:Sử dụng phương pháp truy hồi để tính đa thức chia theo công thức trong [11]. Input: A,B∈ Z, số nguyên tố p,n∈ Z,n≥ −1.

Output: Đa thức chia bậcntheo biến xcủa đường cong EtrênFp. Câu lệnh gọi: divpol_Ep(A,B,n,p).

Ví dụ 3.15 >divpol_Ep(3,3,7,11); Kết quả:2+9x2+3x+6x12+x10+5x9+4x8+4x7+4x5+7x11+5x3+x4+10x6+ 4x14+7x13+2x15+4x16+x20+10x18+7x22+5x21+7x24 Ví dụ 3.16 >divpol_Ep(3,1,8,5); Kết quả: (3x2+x+4x12+3x10+12x9+6x8+8x7+x5+8x11+3x3+4x4+4x6+ 12x14+3x13+5x15+9x16+10x20+8x19+3x17+7x18+9x22+5x21+4x23+3x24+ 12x25+6x27+6x26+4x28+6x29+8x30)(x3+3x+1)1/2 7. Tính bất biến j(τ) của dàn L= [1,τ].

Ý tưởng: Dựa vào công thức (1.7).

Input:τ là một số trong trường toàn phương,10−k là độ chính xác yêu cầu. Output:j(τ).

Câu lệnh gọi:eval f(jE(t,k),k);.

Ví dụ 3.17 >evalf(jE((1+sqrt(-171))/2,100),100);

Kết quả: -694282057876536664.012288686708307426044367453641244662629850739572546347 3388253741556300298906638067+.123942632325922722950580584237100075665685036842713621 1298939480263607273914020009789437075679385567e-82 I .

8. Xây dựng đa thức Hilbert tương ứng với 1 order có biệt thức D cho trước. Input:Dlà biệt thức của một order trong trường toàn phương ảo.

Output: Đa thức biếnX hệ số nguyên. Câu lệnh gọi: Hilpol(D);

Ví dụ 3.18 >Hilpol(-20);

Kết quả: −681472000−1264000X+X2.

9. Sinh một đường cong với số điểm cho trước trên trường hữu hạn.

Ý tưởng: Dựa vào thuật toán chương 2 . Input:N ∈ N,plà một số nguyên tố. Output:E :y2= x3+Ax+BtrênFp0. Câu lệnh gọi: gener(N,p);

Ví dụ 3.19 >gener(252,17);

Kết quả: Y2 =X3+171X+114, mod 227 .

10. Sinh một đường cong là nhóm được mô tả trên trường hữu hạn.

Ý tưởng: Dựa vào mở rộng của phương pháp phép nhân phức. Chương trình chỉ áp dụng cho đường cong có một nhóm xoắn.

Input: listl = [n1,n2],n1| n2,plà một số nguyên tố phù hợp. Output:E :y2= x3+Ax+Bcó E(Fp)∼=Zn1⊕Zn2.

Câu lệnh gọi: gener_tor([n1,n2],p);

Ví dụ 3.20 >gener_tor([6,42],217); Kết quả: Y2 =X3+81X+54.

11. Xác định dạng của vành tự đồng cấu của một đường cong thường .

Ý tưởng:Áp dụng thuật toán tìm chỉ số của vành tự đồng cấu trong order cực đại của trường toàn phương ảo trong chương 3.

Input: Đường cong thường trênFp.

Output:ω ∈ trường toàn phương ảo màEnd(E) =Z+. Câu lệnh gọi:End_type(A,B,p).

Ví dụ 3.21 >End_type(70,137,271); Kết quả: - 1/2 + 3/2 I √

[1] I. F. Blake, G. Seroussi, N. P. Smart (1999), Elliptic Curves in Cryptography, Cambridge University Press.

[2] David A.Cox (1989),Primes of the Formx2+ny2. Fermat, Class field theory, and complex multiplication, Wiley Publication.

[3] Steven D.Galbraith (1999), Constructing isogenies between elliptic curves over finite fields,LMS J. Comput. Math.2, pp.118-138.

[4] M.Henningsen (2002), Computing the endomorphism type of ordinary elliptic curves over finite fields with Kant V4(preprint).

[5] David Kohel (1996),Endomorphism rings of elliptic curves over finite fields, PhD thesis, University of California at Berkeley, California.

[6] E.Konstantinou, A.Kontogeogis, Y.C.Stamatiou, C.Zaroliagis (2005), Generating Prime Order Elliptic Curves: Difficulties and Efficiency considerations, inInter- national Conference on Information Security and Cryptology - ICISC 2004, LNCS 3506, pp.261-278, Springer.

[7] Serge Lang (1986),Elliptic Functions, Springer-Verlag.

[8] Henry McKean, Victor Moll (1999), Elliptic curves, Function theory, Geometry, Arithmetic, Cambridge University Press.

[9] Joseph H.Silverman (1986),The Arithmetics of Elliptic Curves, Springer-Verlag. [10] Oystein Ovreas Thuen (2006), Constructing elliptic curves over finite fields us- ing complex muliplication, Master thesis, Norwegian University of Science and Technology.

[11] Lawrence C. Washington (2003),Elliptic curves: Number Theory and Cryptogra- phy, Chapman - Hall/CRC.

Một phần của tài liệu PHÉP NHÂN PHỨC TRONG LÝ THUYẾT ĐƯỜNG CCONG ELLIPTI (Trang 49 - 56)