XÂY DỰNG THUẬT TOÁN TRAO ĐỔI KHÓA DỰA VÀO TÍNH TOÁN CẶP TATE TRÊN ĐƯỜNG CONG ELLIPTIC (Luận Văn Thạc Sĩ) Chƣơng 1: Tổng quan về đƣờng cong Elliptic. Chƣơng này trình bày tổng quan về đƣờng cong Elliptic, ứng dụng của đƣờng cong Elliptic và ứng dụng của cặp Tate trên đƣờng cong Elliptic trong mật mã. Chƣơng 2: Nghiên cứu thuật toán tính toán cặp Tate trên đƣờng cong Elliptic. Chƣơng này trình bày chi tiết về thuật toán tính toán cặp Tate trên đƣờng cong Elliptic và cơ sở toán học chứng minh tính đúng đắn của thuật toán. Chƣơng 3: Xây dựng thuật toán trao đổi khóa dựa vào tính toán cặp Tate trên đƣờng cong Elliptic. Chƣơng này trình bày chi tiết về thuật toán trao đổi khóa dựa vào tính toán cặp Tate trên đƣờng cong Elliptic, một số yêu cầu đảm bảo an toàn đối với thuật toán và xây dựng chƣơng trình chạy thuật toán trên máy tính.
Hanoi University of Science and Technology GRADUATE THESIS XÂY DỰNG THUẬT TỐN TRAO ĐỔI KHĨA DỰA VÀO TÍNH TỐN CẶP TATE TRÊN ĐƯỜNG CONG ELLIPTIC Master of Science: Nguyen Thanh Long HÀ NỘI iii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii CÁC KÝ HIỆU, CHỮ VIẾT TẮT v DANH MỤC BẢNG BIỂU vi DANH MỤC HÌNH VẼ vii LỜI MỞ ĐẦU Chƣơng TỔNG QUAN VỀ ĐƢỜNG CONG ELLIPTIC 1.1 Tổng quan ứng dụng đƣờng cong Elliptic trƣờng hữu hạn 1.1.1 Định nghĩa đƣờng cong Elliptic trƣờng hữu hạn Fp 1.1.2 Một số tính chất phép tốn đƣờng cong Elliptic 1.1.3 Ứng dụng đƣờng cong Elliptic mật mã 12 1.2 Tổng quan cặp Tate đƣờng cong Elliptic 16 1.2.1 Một số tính chất Divisor 16 1.2.2 Khái niệm cặp Tate đƣờng cong Elliptic 19 1.2.3 Một số tính chất hệ cặp Tate 23 1.2.4 Ứng dụng cặp Tate đƣờng cong Elliptic mật mã 25 1.3 Kết luận chƣơng 26 Chƣơng NGHIÊN CỨU THUẬT TỐN TÍNH TỐN CẶP TATE TRÊN ĐƢỜNG CONG ELLIPTIC 2.1 Các hàm toán học liên quan sử dụng tính tốn cặp Tate đƣờng cong Elliptic 27 2.2 Xây dựng thuật toán tính tốn cặp Tate đƣờng cong Elliptic 28 2.2.1 Một số tính chất hàm liên quan tính tốn cặp Tate 28 iv 2.2.2 Thuật tốn tính tốn cặp Tate đƣờng cong Elliptic 34 2.3 Chứng minh tính đắn thuật tốn tính tốn cặp Tate đƣờng cong Elliptic 39 2.4 Kết luận chƣơng 40 Chƣơng XÂY DỰNG THUẬT TOÁN TRAO ĐỔI KHĨA DỰA VÀO TÍNH TỐN CẶP TATE TRÊN ĐƢỜNG CONG ELLIPTIC 3.1 Xây dựng thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic 41 3.2 Một số yêu cầu đảm bảo an tồn thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic 46 3.3 Xây dựng, mô chƣơng trình trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic máy tính 46 3.3.1 Công cụ lập trình 46 3.3.2 Xây dựng chƣơng trình mơ trao đổi khóa dựa tính tốn cặp Tate đƣờng cong Elliptic 47 3.3.3 Kết chƣơng trình mơ trao đổi khóa dựa tính tốn cặp Tate đƣờng cong Elliptic 52 3.3.4 Đánh giá kết 55 3.4 Kết luận chƣơng 56 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 58 PHỤ LỤC 60 v CÁC KÝ HIỆU, CHỮ VIẾT TẮT Viết tắt ANSI DDH EC ECC ECDSA IKE ISO NIST Tiếng Anh Tiếng Việt American National Standards Viện Tiêu chuẩn Quốc gia Institute Hoa Kỳ Decisional Diffie-Hellman Elliptic Curve Elliptic Curve Cryptography Bài toán giả định Difie Hellman Đƣờng cong Elliptic Hệ mật đƣờng cong Elliptic Elliptic Curve Digital Signature Lƣợc đồ chữ ký số Algorithm đƣờng cong Elliptic Internet Key Exchange Giao thức trao đổi khóa International Organization for Tổ chức tiêu chuẩn hoá Standardization quốc tế National Institute of Standards Viện Tiêu chuẩn Công and Technology nghệ quốc gia Mỹ Đề tài đƣợc chia làm nội dung nhƣ sau: Chƣơng 1: Tổng quan đƣờng cong Elliptic Chƣơng trình bày tổng quan đƣờng cong Elliptic, ứng dụng đƣờng cong Elliptic ứng dụng cặp Tate đƣờng cong Elliptic mật mã Chƣơng 2: Nghiên cứu thuật toán tính tốn cặp Tate đƣờng cong Elliptic Chƣơng trình bày chi tiết thuật tốn tính tốn cặp Tate đƣờng cong Elliptic sở toán học chứng minh tính đắn thuật tốn Chƣơng 3: Xây dựng thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic Chƣơng trình bày chi tiết thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic, số yêu cầu đảm bảo an toàn thuật tốn xây dựng chƣơng trình chạy thuật tốn máy tính Chƣơng TỔNG QUAN VỀ ĐƢỜNG CONG ELLIPTIC Chƣơng trình bày tổng quan đƣờng cong Elliptic, ứng dụng đƣờng cong Elliptic ứng dụng cặp Tate dựa đƣờng cong Elliptic mật mã 1.1 Tổng quan ứng dụng đƣờng cong Elliptic trƣờng hữu hạn Mật mã đƣờng cong Elliptic đƣợc đề xuất N.Kobbitz V.Miller năm 1985 Mặc dù đời sau nhƣng hệ mật đƣờng cong Elliptic dần khẳng định với nhiều ƣu so với hệ mật khóa cơng khai trƣớc Hiện đƣợc nhiều tổ chức viễn thông giới nhƣ ANSI, IEEE, ISO, NIST… chuẩn hóa thành tiêu chuẩn thuật tốn ứng dụng 1.1.1 Định nghĩa đường cong Elliptic trường hữu hạn Fp Định nghĩa 1.1: Một đƣờng cong Elliptic dạng xạ ảnh Weierstrass đầy đủ trƣờng số hữu hạn K tập tất điểm xạ ảnh (x, y, z) thoả mãn phƣơng trình: y z a1xyz a3 yz x3 a2 x z a4 xz a6 z với a1, a2 , a3 , a4 , a6 K Điểm vô hạn đƣờng cong (0,1,0) Định nghĩa 1.2: Một đƣờng cong Elliptic dạng Affine Weierstrass đầy đủ trƣờng K tập tất điểm Affine (x, y) thoả mãn phƣơng trình: y a1xy a3 y x3 a2 x a4 x a6 ; với a1, a2 , a3 , a4 , a6 K Điểm vô hạn đƣờng cong đƣợc ký hiệu Trong phạm vi đồ án này, ta xét K trƣờng nguyên tố Fp với p số nguyên tố; p 2,3 Khi ta có đƣờng cong Elliptic dạng Weierstrass rút gọn (kí hiệu E p (a, b) E ( Fp ) ), gọi tắt E đƣợc biểu diễn phƣơng trình: E: y x3 ax b ; (a, b) Fp Định nghĩa 1.3: Biệt thức đƣờng cong E đƣợc xác định công thức: 16(4a3 27b2 ) (mod p) Định nghĩa 1.4: Cho f ( x) x3 ax b y Điểm P( x, y ) E đƣợc gọi điểm khơng kì dị tồn hai đạo hàm cấp f cho: df df khác dy dx Nếu hai đạo hàm điểm P điểm kì dị Định nghĩa 1.5: Đƣờng cong Elliptic E đƣờng cong khơng kì dị tất điểm khơng kì dị Ngƣợc lại, có điểm kì dị E đƣờng cong kì dị Đa thức bậc ba x3 ax b có nghiệm bội 4a3 27b2 Nhƣ vậy, đƣờng cong E khơng kì dị (mod p) Định nghĩa 1.6: Đại lƣợng j bất biến đƣờng cong E 0(mod p) là: 4a j j ( E ) 1728 4a 27b Định nghĩa 1.7: Cho E E’ hai đƣờng cong Ellliptic trƣờng K đƣợc xác định phƣơng trình Weierstrass rút gọn, tƣơng ứng với biến số ( x, y) ( x ', y ') đƣợc gọi đẳng cấu trƣờng K tồn r, s, t K u K * cho: với phép biến đổi song ánh x u x ' r ; y u y ' su t E biến thành E ' Khi hai đƣờng cong đẳng cấu theo định nghĩa 1.7 có giá trị j bất biến Có hai giá trị đặc biệt j bất biến là: - j 0: Khi đƣờng cong Elliptic có dạng y x3 b - j 1728: Đƣờng cong Elliptic có dạng y x3 ax Các đƣờng cong với j j 1728 đặc biệt, chúng có tự đẳng cấu (tức song ánh biến đổi từ đƣờng cong vào nó) - y x3 b có đồng cấu ( x, y) ( x, y) với bậc ba không tầm thƣờng - y x3 ax có đồng cấu ( x, y) ( x, iy ) , với i 1 Định nghĩa 1.8: Nếu hai đƣờng cong Elliptic khác đƣợc xác định trƣờng K có j bất biến ta gọi chúng “xoắn đơi-twist” Đƣờng cong xoắn đơi theo định nghĩa 1.8 có dạng: y x3 3j 2j x ; j 1728 1728 j 1728 j Định nghĩa 1.9: Cấp đƣờng cong Elliptic trƣờng Fp số điểm E (kể điểm ) đƣợc ký hiệu # E ( Fp ) Theo định lý Hasse ta có: p p # E( Fp ) p p Định nghĩa 1.10: Đƣờng cong Elliptic E định nghĩa Fp đƣợc gọi đƣờng cong siêu kì dị khơng có điểm cấp p Fp Định nghĩa 1.11: Đƣờng cong Elliptic E định nghĩa Fp thỏa mãn # E ( Fp ) p đƣợc gọi đƣờng cong kì dị Định nghĩa 1.12: Cho E đƣờng cong Elliptic trƣờng Fp , P điểm thuộc E Khi đó, n đƣợc gọi cấp điểm P n số nguyên dƣơng nhỏ thỏa mãn nP Bài toán Logarit rời rạc đường cong Elliptic (ECDLP) Phát biểu toán: Cho E đƣờng cong Elliptic G E điểm có cấp n, điểm P E Hãy tìm số nguyên dƣơng x (với x n ) cho P xG Hiện nay, chƣa có thuật tốn đƣợc coi hiệu để giải toán Để giải toán logarit rời rạc đƣờng cong Elliptic cần phải kiểm tra tất giá trị x [2, n 2] Nếu điểm G đƣợc chọn với cấp n lớn việc giải tốn ECDLP xem nhƣ khơng khả thi 1.1.2 Một số tính chất phép tốn đường cong Elliptic 1.1.3.1 Phép cộng điểm Tập hợp điểm ( x, y) với x, y Fp thỏa mãn phƣơng trình đƣờng cong E điểm với phép tốn cộng tạo thành nhóm gọi nhóm điểm đƣờng cong Elliptic trƣờng Fp ký hiệu E ( Fp ) Cho E đƣờng cong Elliptic xác định phƣơng trình y x3 ax b Gọi P ( x1, y1 ) Q ( x2 , y2 ) điểm E với P, Q Khi đó: Phép cộng hai điểm: Cho hai điểm P Q phân biệt đƣờng cong Elliptic E Tổng P Q ký hiệu R, đƣợc định nghĩa nhƣ sau: Kẻ đƣờng qua P Q Đƣờng thẳng cắt E điểm R ' Tiếp tục kẻ đƣờng thẳng qua R ' vng góc với trục x, đƣờng thẳng cắt E điểm thứ hai điểm P Q R y R’ Q P x P+Q=R Hình 1.1: Phép cộng hai điểm P + Q = R Cụ thể P Q R ( x3 , y3 ) với ( x3 , y3 ) đƣợc tính nhƣ sau: + Nếu x1 x2 thì: x3 x1 x2 (mod p) y3 ( x1 x3 ) y1 (mod p) 56 Dựa vào bảng kết trên, ta thấy kết thời gian thực trao đổi khóa phần mềm mơ máy tính phiên liên lạc tƣơng đối thấp, khoảng từ 70 – 90 ms (mili giây) Theo đó, giao thức trao đổi khóa đáp ứng đƣợc cho số ứng dụng trao đổi khóa địi hỏi thời gian trao đổi khóa nhanh 3.4 Kết luận chƣơng Chƣơng trình bày chi tiết thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic, số yêu cầu đảm bảo an toàn thuật tốn thực xây dựng chƣơng trình chạy thuật tốn máy tính Thực trao đổi khóa thành công bên trao đổi đồng thời đánh giá đƣợc thời gian thực trao đổi khóa phiên liên lạc 57 KẾT LUẬN Đồ án đạt đƣợc kết sau: - Bổ túc đƣợc kiến thức cịn hạn chế q trình học tập trƣớc - Tìm hiểu tổng quan đƣờng cong Elliptic, tổng quan cặp Tate đƣờng cong Elliptic ứng dụng cặp Tate mật mã - Đi sâu nghiên cứu, tìm hiểu thuật tốn tính tốn cặp Tate đƣờng cong Elliptic thuật tốn trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic - Xây dựng phần mềm chƣơng trình mơ trao đổi khóa dựa vào tính tốn cặp Tate với hàm hỗ trợ tính tốn đƣờng cong Elliptic Lập trình sử dụng ngơn ngữ C++ cơng cụ Visual Studio 2008 tích hợp thƣ viện giao diện MFC, có hỗ trợ hàm xử lý số lớn thƣ viện mật mã Miracl Thực thi chƣơng trình chạy ổn định máy tính 58 TÀI LIỆU THAM KHẢO [3] A Enge, Elliptic curves and their applications to cryptography: An introduction, Kluwer Academic Publishers, Dordrecht, 1999 [4] A Menezes , D Hankerson, and S Vanstone Guide to elliptic curve cryptography Springer-Verlag, New York, 2004 [5] A Menezes, Elliptic Curve Public Key Cryptosystems, Kluwer Academic Publishers, 1993 [6] A Robert, Elliptic curves, Springer-Verlag, Berlin, 1973 [7] A Rosing, Implementing elliptic curve cryptography, Manning Publications Company, 1999 [8] Hilal Houssain, Turki F Al-Somani Elliptic Curve Cryptoprocessor Implementation on a Nano FPGA: Interesting for ResourceConstrained Devices, International Journal of RFID Security and Cryptography (IJRFIDSC), Volume 1, Issue 2, December 2012 [9] J H Silverman and J Tate, Rational points on elliptic curves, Undergraduate Texts in Mathematics Springer-Verlag, New York, 1992 59 [10] Lawrence C Washington, Elliptic Curves – Number Theory and Cryptography, 2008 [11] M Scott, Computing the Tate pairing To be presented Cryptographers TrackRSA conference ,2005 [12] Shun Wang, Efficient Computation of Miller's Algorithm in PairingBased Cryptography, 2017 [13] Sujoy Sinha Roy, Bohan Yang, Vladimir Rozic, Nele Mentens, Junfeng Fan and Ingrid Verbauwhede, Designing Tiny ECC Processor, 17th Workshop on Elliptic Curve Cryptography, June 2014 PHỤ LỤC Tác giả đƣa số hàm xây dựng chƣơng trình mơ trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic A.1 Xây dựng hàm phục vụ cho tính tốn cặp Tate - Thủ tục lập phương trình đường thẳng ZZn2 line(ECn& A,ECn& C,ECn& B,int type,ZZn& slope,ZZn& ex1,ZZn& ex2,ZZn& a,ZZn& d) { ZZn2 w; ZZn x,y,z,t,n=a; #ifdef AFFINE extract(A,x,y); n+=x; n*=slope; w.set(y,-d); w-=n; #endif #ifdef PROJECTIVE if (type==MR_ADD) { ZZn x2,y2,x3,z3; extract(B,x2,y2); extract(C,x3,x3,z3); w.set(slope*(a+x2)-z3*y2,z3*d); return w; } if (type==MR_DOUBLE) { ZZn x,y,x3,z3; extract(A,x,y); extract(C,x3,x3,z3); w.set(-(slope*ex2)*a-slope*x+ex1,-(z3*ex2)*d); return w; } #endif return w; } - Thủ tục tính giá trị cặp Tate BOOL tate(ECn& P,ECn& Q,Big& q,ZZn& r) { int i,nb,qnr; ZZn2 res; ZZn a,d; Big p,x,y,n; ECn A; p=get_modulus(); // q co dinh P=2^17*(2^142.P + P) + P normalise(Q); extract(Q,a,d); qnr=get_mip()->qnr; if (qnr==-2) { a=a/2; d=d/4; } normalise(P); A=P; n=q-1; nb=bits(n); res=1; for (i=nb-2;i>=0;i ) { res*=res; res*=g(A,A,a,d); if (bit(n,i)) res*=g(A,P,a,d); } if (A != -P || res.iszero()) return FALSE; res=conj(res)/res; r=powl(real(res),(p+1)/q); if (r==1) return FALSE; return TRUE; } A.2 Xây dựng hàm hỗ trợ giao thức trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic - Xây dựng hàm băm Big H1(char *string) { Big h,p; char s[HASH_LEN]; int i,j; sha512 sh; shs512_init(&sh); for (i=0;;i++) { if (string[i]==0) break; shs512_process(&sh,string[i]); } shs512_hash(&sh,s); p=get_modulus(); h=1; j=0; i=1; forever { h*=256; if (j==HASH_LEN) else {h+=i++; j=0;} h+=s[j++]; if (h>=p) break; } h%=p; return h; } Big H2(ZZn x) { sha sh; Big a,h,p; char s[20]; int m; shs_init(&sh); a=(Big)x; while (a>0) { m=a%256; shs_process(&sh,m); a/=256; } shs_hash(&sh,s); h=from_binary(20,s); return h; } ECn hash(char *ID) { ECn T; Big a=H1(ID); while (!is_on_curve(a)) a+=1; T.set(a); return T; } ECn hash_and_map(char *ID,Big cof) { ECn T; Big a=H1(ID); while (!is_on_curve(a)) a+=1; T.set(a); T*=cof; return T; } A.3 Xây dựng thủ tục trao đổi khóa dựa vào tính tốn cặp Tate đƣờng cong Elliptic - Thủ tục trao đổi khóa Alice với Server void CtraodoikhoaDlg::OnBnClickedThuchien1() { clock_t tv1, tv2; double time1; tv1 = clock(); ifstream common("Dai.ecs"); // Cac tham so ECn Alice,Bob,sA,sB; ECn Server,sS; ZZn res,sp,ap,bp; Big r,a,b,s,ss,p,q,x,y,B,cof; int nbits,A,qnr; // Khoi tao duong cong Elliptic dang twisted // ID cua Server duoc bam tu diem tren duong cong modulo(p); #ifdef AFFINE ecurve(qnr*qnr*A,qnr*qnr*qnr*B,p,MR_AFFINE); #endif #ifdef PROJECTIVE ecurve(qnr*qnr*A,qnr*qnr*qnr*B,p,MR_PROJECTIVE); #endif ss=rand(q); Server=hash((char *)"Server"); sS=ss*Server; // Khoi tao duong cong #ifdef AFFINE ecurve(A,B,p,MR_AFFINE); #endif #ifdef PROJECTIVE ecurve(A,B,p,MR_PROJECTIVE); #endif Alice=hash_and_map((char *)"Alice",cof); // Alice, Bob la diem co cap q sA=ss*Alice; a=rand(q); // Sinh so ngau nhien cua Alice s=rand(q); // Sinh so ngau nhien cua Server if (!tate(sA,Server,q,res)) { MessageBox(_T("Canh bao: Gia tri cap Tate cua Server sai"), _T("Error"),MB_ICONERROR|MB_OK); } if (powl(res,q)!=(ZZn)1) { MessageBox(_T("Canh bao: Bac cua nhom sai"), _T("Error"), MB_ICONERROR|MB_OK); exit(0); } ap=powl(res,a); if (!tate(Alice,sS,q,res)) { MessageBox(_T("Canh bao: Gia tri cap Tate cua Alice sai"),_T("Error"), MB_ICONERROR|MB_OK); } if (powl(res,q)!=(ZZn)1) { MessageBox(_T("Canh bao: Bac cua nhom sai"), _T("Error"), MB_ICONERROR|MB_OK); exit(0); } sp=powl(res,s); ofstream khoaAS("AS.key"); khoaAS