1. 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):
2. 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.
3. 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
∆=
𝑦q – 𝑦p
𝑥q –𝑥p
Với P ≡ Q
∆=
3𝑥 𝑝
2 + 𝐴
2𝑦p
III. Đường cong elliptic trên trường Zp.
- Đường cong elliptic trên trường Zp, đường con này có dạng
Y2
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 11
16 mod 11= 60 mod 11 = 5
Y2
X3
– X X Y
0 0 0 0 0
1 1 0 1 0
2 4 6 10 0
3 9 2 4 4 or 7
4 5 5 9 4 or 7
5 3 10 6 1
6 3 1 6 10
7 5 6 8 8 or 3
8 9 9
4. 9 4 5
10 1 0
Khi modulo cho các số nguyên tố, theo tính toán sẽ có các điểm như sau:
2 2
3 3
5 7
7 7
11 11
13 7
17 19
19 19
23 23
Gọi N là số các điểm trên đường cong elliptic được định nghĩa trên 𝐹𝑞. Khi đó
| 𝑁 − (𝑞 + 1)| ≤ 2√𝑞
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ực
Bâ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à:
5. Xét ví dụ về đường cong Elliptic trên GF(24
):
y2
+ xy = x3
+ g4
x + 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 E2
m
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:
6. 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 Bob
2) Tương tự Bob chọn 1 số β, tính B=βG và gửi B cho Alice
3) Alice chọn khóa phiên bí mật là:
p = αB = αβG
4) 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
7. Để 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à
8. 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:
9. 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ã.
10. 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à:
∏ 𝒏 𝒊
𝒆𝒊
𝒊
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 (𝐹 𝑝 𝑚 )
(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 T1 E N
(4). Tính 1=eN(P,T1) 2(P,T2 ). Khi đó cả 1 2 đều thuộc vào d 𝐹𝑝 𝑛
∗
(5). Giải bài toán log rời rạc 2= 1
𝑘
trong 𝐹𝑝 𝑛
∗
. 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ệ ∑ 𝑛 𝑖 𝑝𝑖 = 0𝑟
𝑖=1 . 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
11. 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. Haibiế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.
12. 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ểmtra 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 y2
Q = 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
13. 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 = ∑ Wi2𝑖−1𝑡
𝑖=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
+27B2
0 (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).
14. TÀI LIEEUK THAM KHẢO
1. Giáo trình AN TOÀN VÀ BẢO MẬT THÔNGTIN .
2. LUẬN VĂN THẠC SĨ NGHIÊN CỨU HỆ MẬT ĐƯỜNGCONGELLIPTIC VÀ ỨNGDỤNG.
3. Youtube Elliptic Curve Cryptography