17
I. Giới thiệu đường cong elliptic Đường cong Elliptic trên số thực Đường cong Elliptic là đường cong có dạng: Y 2 = x 3 +ax+b Trước khi khảo sát đồ thị của đường cong Elliptic, chúng ta xem lại đường bậc 3 sau: Y 2 =f(x)= x 3 +ax+b Nếu a>0 , f(x) đơn điệu tăng. Nếu a 0 ,f(x) có 4 trường hợp sau: đặt Từ đó chúng ta có các trường hợp sau đây của đường cong Elliptic (không sử dụng trường hợp =0 vì lúc này đường cong bị gãy):

Mã hóa đường cong Elliptic

Embed Size (px)

Citation preview

Page 1: Mã hóa đường cong Elliptic

I. Giới thiệu đường cong elliptic

Đường cong Elliptic trên số thực Đường cong Elliptic là đường cong có dạng:

Y2 = x3+ax+b

Trước khi khảo sát đồ thị của đường cong Elliptic, chúng ta xem lại đường bậc 3 sau:

Y2 =f(x)= x3+ax+b

Nếu a>0 , f(x) đơn điệu tăng.

Nếu a≤ 0 ,f(x) có 4 trường hợp sau: đặt

Từ đó chúng ta có các trường hợp sau đây của đường cong Elliptic (không sử dụng trường hợp =0 vì lúc này đường cong bị gãy):

Page 2: Mã hóa đường cong Elliptic

II. Đường cong Elliptic

Trong đường cong Elliptic, chúng ta định nghĩa thêm một điểm O (điểm vô cực). Gọi E(a, b) là tập các điểm thuộc đường cong y=x3+ax+b cùng với điểm O. Ta định nghĩa phép cộng trên tập các điểm thuộc E(a, b) như sau:

1) Điểm O là phần tử đơn vị của phép cộng. Như vậy với P € E(a,b), P≠0 thì P+0=0. Trong phần tiếp theo, ta giả định P≠0 và Q≠0.

2) Phần tử nghịch đảo của điểm P trong phép cộng, ký hiệu – P, là điểm đối xứng với P qua trục hoành, như vậy P+(-P)=0

3) Với 2 điểm P, Q bất kỳ, kẻ một đường thẳng đi qua P và Q thì sẽ cắt đường cong Elliptic tại một điểm thứ 3 là điểm S. Phép cộng P và Q sẽ là R=P+Q=-S

Trong trường hợp P và Q đối xứng qua trục hoành, hay nói cách khác P=-Q thì đường thẳng nối P, Q sẽ cắt đường cong Elliptic tại vô cực, hay P+(-P)=0 . Điều này phù hợp với định nghĩa 2.

Page 3: Mã hóa đường cong Elliptic

4) Để tính P+P , ta vẽ đường thẳng tiếp tuyến với đường cong Elliptic tại P, đường thẳng này cắt đường cong tại điểm S, lúc đó R=P+P=-S

Có thể thấy, tập E(a, b) cùng với phép cộng định nghĩa như trên tạo thành một nhóm Abel

Gọi điểm P(xp,yp) Q(xq,yq)

P+Q=R(xr,yr)

xr=∆2-xp-xq

yr =∆(xp-xr)-yp

Với P ≠ Q

∆= y q – y px q – x p

Với P ≡ Q

∆=3x p

2 + A2 y p

III. Đường cong elliptic trên trường Zp.

- Đường cong elliptic trên trường Zp, đường con này có dạngY2 mod p = (x3+ax+b) mod p a,b,x,y € Zp

- Ví dụ trong trường Z11, chọn a=-1, b=0, x=4,y=4 ta có42 mod 11 = (43-4) mod 1116 mod 11= 60 mod 11 = 5

Y2 X3 – X X Y0 0 0 0 01 1 0 1 02 4 6 10 03 9 2 4 4 or 74 5 5 9 4 or 75 3 10 6 16 3 1 6 107 5 6 8 8 or 3

Page 4: Mã hóa đường cong Elliptic

8 9 99 4 5

10 1 0Khi modulo cho các số nguyên tố, theo tính toán sẽ có các điểm như sau:

2 23 35 77 7

11 1113 717 1919 1923 23

Gọi N là số các điểm trên đường cong elliptic được định nghĩa trên Fq. Khi đó |N−(q+1)|≤ 2 √ q

IV. Đường cong Elliptic trên trường GF(2m) Đường cong Elliptic trên trường GF(2m) là đường cong có các hệ số thuộc trường GF(2m), đường cong này có dạng hơi khác so với trên Zp:

y2+xy=x3+ax=b a,b,x,y € GF(2m)

Đường cong y2+xy=x3+ax=b trên trường số thựcBây giờ chúng ta sẽ xét tập E2

m(a,b) gồm các điểm trên đường cong Elliptic này cùng với điểm vô cực O. Ví dụ, xét trường GF(24) với đa thức tối giản là m(x)=x4+x+ 1. Phần tử sinh g của trường này có điều kiện g4 = g+ 1 . Bảng các lũy thừa của g là:

Page 5: Mã hóa đường cong Elliptic

Xét ví dụ về đường cong Elliptic trên GF(24):y2 + xy = x3 + g4x + 1 (a = g4,b = 1)

Bảng bên dưới liệt kê các điểm thuộc đường cong này

Tương tự như nhóm Abel Ep(a,b) , chúng ta cũng xây dựng một nhóm Abel E2m gồm các điểm của

đường cong Elliptic GF(2m) cùng với điểm vô cực O. 1) Điểm O là phần tử đơn vị của phép cộng. P + 0 = 0 + P = 0.2) Phần tử nghịch đảo của điểm P trong phép cộng, ký hiệu – P, là điểm đối xứng với P, ký hiệu P =(xp,yp) thì –P =( xp,xp+yp)3) Với 2 điểm P, Q bất kỳ (P ≠ Q) phép cộng R=P+Q được xác định bằng công thức:

4) Phép cộng R=P+P được xác định bằng công thức:

Page 6: Mã hóa đường cong Elliptic

V. Đường cong Elliptic trong mã hóa – ECCĐối với mã hóa đường cong Elliptic, chúng ta xây dựng hàm một chiều như sau: Trong nhóm Abel Ep(a,b) xây dựng từ đường cong Elliptic Zp, xét phương trình:

Q=P+P+P+P+…+P=kP (điểm Q là tổng của k điểm P, k < p)Cho trước k và P, việc tính Q thực hiện dễ dàng. Tuy nhiên nếu cho trước P và Q, việc tìm ra k là công việc khó khăn. Đây chính là hàm logarit rời rạc của đường cong Elliptic. Ví dụ:

Y2 mod 17 = (x3+2x+2) mod 11 a,b,x,y € Z11

Cho điểm G =(5,1); M(7,6)

2G=(6;3) 6G=(16;13)3G=(10;6) 7G=(0;6)

4G(3;1) 8G=(13;17)5G=(9;16) 9G=(7;6)

Vì 9G = M nên K = 9. Trong thực tế chúng ta sẽ sử dụng đường cong Elliptic Zp với giá trị p lớn, sao cho việc vét cạn là bất khả thi. Hiện nay người ta đã tìm ra phương pháp tìm k nhanh hơn vét cạn là phương pháp Pollar rho. Dựa vào hàm một chiều trên chúng ta có 2 cách sử dụng đường cong Elliptic trong lĩnh vực mã hóa là trao đổi khóa EC Diffie-Hellman và mã hóa EC.

VI. Trao đổi khóa EC Diffie-Hellman Trước tiên ta chọn một số nguyên q lớn, với q là số nguyên tố (nếu sử dụng đường cong Elliptic Zp) hoặc q có dạng 2m (nếu chọn đường cong GF(2m)), và chọn 2 tham số a, b tương ứng để tạo thành nhóm Eq(a,b). Ta gọi G là điểm cơ sở của nhóm nếu tồn tại một số nguyên n sao cho nG=0 Số nguyên n nhỏ nhất như vậy được gọi là hạng của G. Trong trao đổi khóa EC Diffie-Hellman, ta chọn một điểm G có hạng n lớn, và giao thức trao đổi khóa giữa Alice và Bob tiến hành như sau:1) Alice chọn một số bí mật α < n và giữ bí mật α này. Sau đó, trong Eq(a,b), Alice tính A = αG

và gửi A cho Bob2) Tương tự Bob chọn 1 số β, tính B=βG và gửi B cho Alice3) Alice chọn khóa phiên bí mật là:

p = αB = αβG4) Bob tạo khóa phiên bí mật

p = βB = βαG = αβG

Giống với khóa của Alice và Eve có thể chặn được A B tuy nhiên chỉ có thể tính được

A + B = αG + βG = (α + β)G

Page 7: Mã hóa đường cong Elliptic

Để tính được k = αβG, Eve phải tìm được α,β từ A và B và G. Tuy nhiên điều nay là bất khả thi như đã thấy

Ví dụ: Cho

P=17

a=2

b=2

G=(5;1)

n=19

h=1

A=(10;6)

B(7;6)

Ta bắt đầu tính

G=(5;1) 11G=(13;10)2G=(6;3) 12G=(0;11)3G=(10;6) 13G=(16;4)4G=(3;1) 14G=(9;1)5G=(9;16) 15G=(3;16)

6G=(16;13) 16G=(10;11)7G=(0;6) 17G=(6;14)8G=(13;7) 18G=(5;16)9G=(7;6) 19G=0

10G=(7;11)Ta thấy A = 3G => α = 3

B = 9G => β = 9

β A = 9A = 9(3G) = 27G = 8G = (13;7)

αβ = 3B = 3(9G) = 27G = 8G = (13;7)

Trên thực tế các thành phần công khai sẽ là

Page 8: Mã hóa đường cong Elliptic

VII. Mã hóa và giải mã EC

Tương tự như vấn đề trao đổi khóa, trong vấn đề mã hóa/giải mã, ta cũng chọn các tham số để tạo một nhóm Abel Eq(a,b) và chọn một điểm cơ sở G có hạng n lớn.

Các thành phần khóa khóa riêng và công khai trong mã hóa EC được định nghĩa như sau:

Trong đó d<n và E = dG với d là một số bí mật do người sinh khóa chọn. Do tính chất của hàm một chiều từ E và G không thể suy ra được d.

Từ đó chúng ta có hai cách thức thực hiện mã hóa/ giải mã như sau:

1) Phương pháp Elgamal:

Giả sử Alice muốn gửi một thông điệp M cho Bob, trước tiên Alice chuyển M từ dạng dãy bít sang dạng điểm PM =(x, y). Bản mã CM (dùng khóa công khai của Bob) được tính là một cặp điểm như sau:

CM = {kG, PM + kE) với k là một số ngẫu nhiên do Alice chọn

Để giải mã dùng khóa riêng, Bob sẽ nhân điểm thứ nhất trong CM với d, sau đó lấy điểm thứ hai trừ cho kết quả:

PM = kE – dkG = PM + kdG – kdG = PM

Trong phương thức mã hóa, Alice đã che giấu PM bằng cách cộng PM với kE. Để giải mã, Bob cần trừ ra lại kE. Thay vì gửi trực tiếp k cho Bob để Bob tính kE (Trudy có thể chặn được), Alice gửi một dấu hiệu là kG . Dựa vào kG và d, Bob có thể tính kE. Còn Trudy, dù biết G và kG, tuy nhiên vẫn không thể tính được k do tính chất của hàm một chiều.

Ví dụ: chọn p = 751, a = 1, b = 188 ta có đường cong Elliptic trên Z751 như sau:

Page 9: Mã hóa đường cong Elliptic

Chọn điểm cơ sở là G =(0, 376).

Giả sử Alice cần mã hóa bản rõ là điểm PM = (562, 201) dùng khóa công khai E = (201, 5). Alice chọn k = 386. Ta có:

386(0, 376) = (676, 558)

(562,201) + 386(201, 5) = (385, 328)

Vậy bản mã là cặp điểm { (676, 558), (385, 328) }

2) Phương pháp Menezes - Vanstone:

Thông điệp M của Alice được tách thành hai phần M=(m1, m2) sao cho m1, m2 € Zp. Alice chọn một số ngẫu nhiên k, kết hợp với khóa công khai của Bob, Alice tính điểm P như sau:

Bản mã CM gồm ba thành phần

Để giải mã dùng khóa riêng, từ dấu hiệu kG, Bob tính:

và từ đó tính nghịch đảo của xp-1 và yp

-1 trong phép modulo p. Cuối cùng, bản giải mã là:

Tương tự như phương pháp Elgamal, dù biết G và kG, Trudy cũng không thể tính được k để tính P.

VIII. Độ an toàn của ECC so với RSA

Hiện nay, phương pháp nhanh nhất để tính logarit đường cong Elliptic (tính k biết G và kG) là phương pháp Pollar rho. Bảng sau đây liệt kê kích thước khóa của phương pháp ECC và phương pháp RSA dựa trên sự tương đương về chi phí phá mã.

Page 10: Mã hóa đường cong Elliptic

Như vậy với cùng một độ an toàn thì mã hóa ECC chỉ dùng các phép tính có số bít nhỏ hơn nhiều lần so với mã hóa RSA.

IX. Đánh giá các tấn công hệ mật đường cong Elliptic

Phương pháp Pohlig - Hellman

Cho P Q, là các phần tử trong nhóm hữu hạn G bậc N. Ta muốn tìm một số nguyên k với kP Q . Giả sử biết phân tích ra thừa số nguyên tố của N là:

∏i

nie i

Phương pháp Pohlig – Hellman thực hiện tốt nếu tất cả các ước nguyên tố của N là nhỏ. Nếu ước nguyên tố lớn nhất xấp xỉ lớn của N thì phương pháp Pohlig – Hellman rất khó áp dụng. Vì lý do này, các hệ mật dựa trên logarith rời rạc, nói chung thường chọn bậc của nhóm có chứa một thừa số nguyên tố lớn.

Tấn công MOV.

Thuật toán:

Input: P,Q , (EFp), ord (P) N , gcd(N, p)=1, nQ kP.

Output: k N (mod )

(1). Chọn một điểm ngẫu nhiên T E (F pm )

(2). Tính bậc M của T

(3). Đặt gcd(M, N), đặt T 1 (M / d) T . Khi đó T1 có bậc d chia hết cho N , vậy T 1 E N

(4). Tính 1=eN(P,T1) 2(P,T2 ). Khi đó cả 1 2 đều thuộc vào d F pn¿

(5). Giải bài toán log rời rạc 2= ❑1k trong F pn

¿ . Kết quả cho ta k (mod d ).

(6). Lặp lại với các điểm ngẫu nhiên T đến khi bội chung nhỏ nhất của các số d khác nhau thu được là N. Khi đó ta xác định được k (mod N).

Phương pháp Xedni

Thuật toán tính chỉ số ngược đầu tiên là nâng các điểm , P1,P2 ….Pn, sau đó chọn một đường cong Elliptic E Q chứa các điểm đã nâng và hy vọng rằng chúng phụ thuộc tuyến tính. Nghĩa là thỏa

mãn quan hệ ∑i=1

r

ni pi=0. Tuy nhiên, xác suất để chúng phụ thuộc tuyến tính là nhỏ.

4 Các tấn công dựa trên giả thuyết Diffie – Hellman

Page 11: Mã hóa đường cong Elliptic

Cho G là một nhóm Abel bậc nguyên tố p và g là phần tử sinh của G. Bài toán logarith rời rạc DLP trong G là bài toán tìm số aZp khi biết g và ga trong G. Nhiều hệ mật được thiết kế dựa trên bài toán DLP, tuy nhiên hầu hết chúng có độ an toàn tương đương với một biến thể yếu hơn của bài toán DLP. Hai biến thể yếu hơn quan trọng nhất là bài toán DH – Tính toán CDH và bài toán DH – Quyết định DDH.

CDH: Cho g ,g a ,g b ,. Tính g ab?

DDH: Cho g, ga ,gb, gc . Xác định xem c ab trong Zp hay không?

Các tấn công cài đặt

Kiểu tấn công cài đặt thứ nhất là dựa trên điểm không hợp lệ của đường cong Elliptic. Nếu trong quá trình nhận và xử lý một điểm trên đường cong mà không thực hiện việc kiểm tra xem nó có thực sự nằm trên đường cong đã cho hay không thì lược đồ có thể bị tấn công.

Dạng tấn công thứ hai là kiểu tấn công phân tích năng lượng để khám phá khóa bí mật.. Hiệu quả của các kiểu tấn công này phụ thuộc vào cách cài đặt cụ thể.

Nhận xét Tổng hợp các phương pháp trên ta có bảng như sau:

2.2 Sinh tham số cho hệ mật Elliptic

2.2.1 Tham số miền của đường cong Elliptic

Các tham số cho hệ mật đường cong Elliptic trên Fp là một bộ Fp ,A,B,G,N,h,SEED trong đó:

p>3 là số nguyên tố, xác định trường hữu hạn cơ sở Fp .

E: y2 =x3 +Ax + B với A,BFp.

Page 12: Mã hóa đường cong Elliptic

Phần tử sinh G (xG ,yG ) có bậc nguyên tố là N trên E , (xG ,yG ) e(Fp)và N=# E(FP) .

Đồng thừa số h=1

Một xâu bít SEED dùng để sinh ngẫu nhiên đường cong

2.2.2 Sinh và kiểm tra cặp khóa đường cong Elliptic

Thuật toán 2: Sinh cặp khóa cho hệ mật Elliptic

Input: Bộ tham số miền (Fp,A,B,G,N,h,SEED)

Output: (Q – điểm công khai, d – khóa bí mật)

(1) Sinh dR[0,N-1] . Số nguyên d phải được giữ bí mật và phải không dự đoán được

(2) Tính điểm Q= (xQ,,yQ) dG

(3) Trả về cặp khóa là ( Q,d ) trong đó Q là khóa công khai, d là khóa bí mật.

Với một bộ tham số miền (Fp ,A,B,G,N,h,SEED) và một khóa công khai Q có thể được kiểm tra tính hợp lệ theo thuật toán dưới đây.

Thuật toán 3: Kiểm tra tính hợp lệ của khóa công

khai Input: Tham số miền (Fp ,A,B,G,N,h,SEED) , khóa công khai Q

Output: “Khóa công khai hợp lệ” hoặc “Khóa công khai không hợp lệ”

(1) Kiểm tra Q không phải là điểm trên E

(2) Kiểm tra xQ ,yq Fp

(3) Kiểm tra rằng y2Q = x3

Q + AxQ = B trong Fp .

(4) Kiếm tra NQ

(5) Nếu bất kỳ một trong các phép kiểm tra trên thất bại trả về “khóa công khai không hợp lệ” còn không thì trả về “khóa công khai hợp lệ”.

2.2.3 Thuật toán kiểm tra điều kiện MOV

Thuật toán 4: Kiểm tra điều kiện MOV

Input: Giá trị B là cận của MOV theo tiêu chuẩn EC5

Output: 0: Không thỏa mãn điều kiện MOV; 1: Thỏa mãn MOV

(1) t = 1, ok= 1;

(2) for i = 1 to B do

Page 13: Mã hóa đường cong Elliptic

T = t.p (modN)

If (t==1){ok=0; return ok;}

(3) return ok;

2.2.4 Thuật toán sinh đường cong ngẫu nhiên

Thuật toán 5: Sinh đường cong ngẫu nhiên

Input: Số nguyên tố p

Output: Chuỗi SEED và A, B Fp xác định E trên Fp .

Tính trước t = log2 p, s= (t-1)/256 ,h=t-256s

(1) Chọn một chuỗi bít SEED có độ dài ít nhất là 256 bít. Gọi g là độ dài theo bít của SEED.

(2) Tính H=SHA256(SEED), gọi Co là h bít bên phải của H

(3) Wo là h bít nhận được bởi việc thiết lập bít ngoài cùng bên trái của Co thành 0 (nhằm đảm bảo r < p)

(4) Với i= 1 đến s tính Wt =SHA256(SEED i) mod 2

(5) W W0 W1 ..... Ws

(6) Với w1 w2 .… wt là các bít của W từ trái qua phải. Tính số nguyên r=∑i=1

t

W i2i−1

(7) Chọn A,BFp sao cho rB2 A3 (mod p) (A, B không nhất thiết phải chọn ngẫu nhiên).

(8) Nếu 4A3+27B20 (mod P) chuyển sang bước 1.

(9) Đường cong được chọn trên Fp là E: y2= x3 +Ax+B .

(10) Return (SEED, A, B).

Page 14: Mã hóa đường cong Elliptic

TÀI LIEEUK THAM KHẢO

1. Giáo trình AN TOÀN VÀ BẢO MẬT THÔNG TIN .2. LUẬN VĂN THẠC SĨ NGHIÊN CỨU HỆ MẬT ĐƯỜNG CONG ELLIPTIC VÀ ỨNG DỤNG.3. Youtube Elliptic Curve Cryptography