You are on page 1of 63

MẬT MÃ TRÊN ĐƯỜNG

CONG ELLIPTIC
Nhóm 07

1
Bảng phân công 
Làm Làm
MSV Làm BT Code Ghi chú
doc slide

Nguyễn Tùng Anh AT140102 Tổng hợp

Hoàng Nguyên Thái AT140340 2, 8.1 Tổng hợp doc, slide

Ngô Nguyễn Quỳnh Hương AT140815 1 Tổng hợp doc, slide

Phạm Thành Trung Hiếu AT140420 Doc (chương 2.1)

Nguyễn Thế Bắc AT140103 3,4,7 Slide phần 04, 05

Nguyễn Văn Chung AT140504 3,4,7

Đào Thành Đạt AT140306 5,6,8.2

Nguyễn Hữu Hoàng AT140523

Đoàn Văn Quỳnh AT130843

Nguyễn Thành Hiếu AT140419


2
NỘI DUNG

01 02 03
Hệ mật khóa Đường cong Elliptic Mật mã trên
công khai đường cong
Elliptic

04 05
Nhúng số điểm Bài tập
trên đường cong
Elliptic
3
01
Hệ mật khóa công khai

4
Hệ mật khóa bí mật

C = E(K, m) m = D(K, c)
Plaintext Ciphertext Plaintext

Alice Encrypt Decrypt Bob

Khóa bí mật

5
Hệ mật khóa công khai

C = E(Kp, m) m = D(Ks, c)
Plaintext Ciphertext Plaintext

Alice Encrypt Decrypt Bob

Khóa công khai Khóa bí mật


6
02
Đường cong Elliptic

7
Khái niệm

● Đường cong Elliptic E trên trường Fp


được xác định bởi phương trình
(*)
●  p là số nguyên tố
● Fp là trường hữu hạn các số nguyên
theo modulo p
● Với điều kiện:
  ¿𝒂,𝒃∈𝑭𝒑
{¿ 𝟒 𝒂 𝟑 +𝟐𝟕 𝒃𝟐 ≠𝟎 ( 𝐦𝐨𝐝 𝒑 )

8
Khái niệm

● Một cặp (x, y) trong đó


được gọi là một điểm thuộc đường

● cong
  nếu chúng thỏa mãn (*).
● Ngoài ra có «điểm ở vô cùng» ký
hiệu là O, (∞)

9
Các phép toán trên đường cong Elliptic
Phép cộng

Phép cộng 2 điểm P và Q trên


đường cong Elliptic hoạt động
như sau:
 Kẻ đường thẳng A đi qua 2 điểm
P và Q.
 Đường thẳng A cắt đường cong
Elliptic tại điểm E = -(P + Q)
 Lấy đối xứng giao điểm qua trục
Ox ta được điểm R = (P + Q)

10
Các phép toán trên đường cong Elliptic
Phép cộng

● Trường hợp 2 điểm P và Q


trùng nhau, đường thẳng A
là tiếp tuyến với đường cong
tại điểm P. Thực hiện tương
tự ta được điểm 2P.

11
Các phép toán trên đường cong Elliptic
Phép nhân vô hướng

Phép nhân thực chất là thực


hiện phép cộng nhiều lần

12
Nhóm cộng của các điểm
●  

1. Nếu , thì
2. Nếu trong đó:   𝑦2 − 𝑦1
𝜆=
¿{
¿
𝑥2 − 𝑥1
2
3 𝑥 1+ 𝑎
2 𝑦1
, 𝑃1 ≠ 𝑃 2

, 𝑃1 =𝑃2

3. Phép lấy nghịch đảo được tính toán khá dễ dàng, nghịch đảo của (x, y) là
–(x, y) và = (x, -y)
13
Nhóm cộng của các điểm

● Để các điểm trên đường cong Elliptic tạo thành nhóm (+), “điểm vô
cùng” (∞) sẽ được thêm vào đường cong, kí hiệu là O, điểm này sẽ
nằm ở trên cùng và dưới cùng của trục y. Một trong những thuộc
tính quan trọng nhất của đường cong Elliptic là tồn tại nhóm các
điểm với phép cộng nằm trên đường cong.

14
Tính chất phép cộng điểm

 Tính chất kết hợp

( 𝑃1 + 𝑃2 ) + 𝑃3=𝑃 1+ ( 𝑃 2+
 

 Tính chất giao hoán

𝑃1 +𝑃2=𝑃2 +𝑃1 ∀ 𝑷 𝟏 ,
 

 Tồn tại phần tử trung hòa


  𝑃 +∞ =∞ + 𝑃 = 𝑃 ∀
 Tồn tại phần tử đối

′ ′
∃ 𝑷 ∈ 𝑬 : 𝑃 + 𝑃= 𝑃+
 

 Tính đóng

15
Phần tử đối

𝑃=∞ ⇒−𝑃=∞
 

Ghi chú
 
𝑃 ( 𝑥 , 𝑦 ) ∈ 𝐸 ⇒ 𝑃′ ( 𝑥 , − 𝑦 ) ∈ 𝐸

Ví dụ

𝑃=(2,3)⇒−𝑃=(2,−3)=(2,4)
 

16
Bậc của điểm P Nhóm con cyclic sinh bởi P

● Cho đường cong E(Fp) ● Cho đường cong E(Fp) và


và P là một điểm thuộc P là một điểm thuộc
đường cong. Bậc của P đường cong. Giả sử P có
là số nguyên n nhỏ nhất bậc là n. Khi đó, nhóm
thỏa mãn n⋅P = ∞ con cyclic sinh bởi P
được kí hiệu là <P> và:
⟨P⟩={∞, P, 2P, 3P,…, (n - 1)P}

17
03
Mật mã trên đường cong
Elliptic
18
Bài toán logarit rời rạc
Định nghĩa : Giả sử G là một nhóm cyclic hữu hạn có cấp n. Gọi a là
phần tử sinh của G và b là một phần tử cũng thuộc G. Khi đó Lô-ga-
rít rời rạc của b theo cơ sở a trên G, được ký hiệu là logab, là một số
nguyên duy nhất x với 0 £ x £ n - 1 sao cho b = ax.
Trên mọi cấu trúc nhóm cyclic nếu biết trước a và x mà cần tính b = ax thì
đây là một việc dễ và thực hiện được. Ngược lại biết a, b mà tính x thì
đây là một việc nói chung là khó và được thực hiện trong thời gian hàm
mũ. Độ khó của bài toán Lô-ga-rít cũng phụ thuộc vào cấu trúc đại số
mà trên đó nó được xác định.

19
Bài toán lô-ga-rít rời rạc trên đường cong
Elliptic (ECDLP)

Cho trước một đường cong Elliptic E xác định trên trường
hữu hạn GF(q). Giả sử P là một điểm có bậc n và Q là một
điểm của E. Hãy xác định số nguyên k, 0 £ k £ n - 1 sao
cho Q = kP nếu số nguyên k như vậy tồn tại.

20
Bài toán logarit rời rạc

Z*p E(Fp)
Cho p, a Cho p, PE(Fp)

Biết x. Tính y = ax (mod p) Biết k. Tính Q = kP


 DỄ  DỄ

Biết y. Tìm x: y = ax (mod p) Biết Q. Tìm k: Q = kP


 KHÓ  KHÓ

21
Trao đổi khóa

ECDH ECMQV

22
Trao đổi khóa Diffie - Hellman ECDH

Alice Bob

dA d AP dAP
dBP dBP dB
KA = dAdBP KB = dBdAP
23
Mã hóa - Giải mã

Massey-
ElGamal ECIES
Omura

24
Sinh cặp khóa

INPUT Tham số hệ thống <p, E(a, b), P, n)>

Chọn ngẫu nhiên d [1, n –1]


Tính Q = dP
Kết quả là:
KCK: Q
KBM: d

OUTPUT Khóa công khai Q và khóa bí mật d


25
Mã hóa
Tham số hệ thống <p, E(a, b), P, n)>
INPUT Khóa công khai Q
Thông điệp m
Biểu diễn m thành điểm M  E
Chọn số ngẫu nhiên k [1, n – 1]
Tính C1 = kP
Tính C2 = M + kQ
Kết quả là C = (C1, C2)

OUTPUT Bản mã (C1, C2)


26
Giải mã
Tham số hệ thống (p, E(a, b), P, n)
INPUT Khóa bí mật d
Bản mã (C1, C2)

Tính M = C2 – dC1
Trích xuất m từ M
Kết quả là m

OUTPUT Thông điệp m


27
Hệ chữ ký trên đường cong Elliptic

Elgamal
ECDSA
Elliptic

28
04
Nhúng số điểm trên đường
cong Elliptic
29
Không dùng  Sử dụng
hệ số nhúng hệ số nhúng

30
Không dùng hệ số nhúng
1 Cho đường cong E(Fp): y2 = f(x) = x3 + ax + b

2
Cho m là số nguyên. Muốn mã hóa m bằng ECC thì cần
chuyển m thành điểm M=(x, y) nào đó

3 Ý tưởng nhúng
o Coi m là hoành độ của M, tức M = (m, y)
o Thay x = m vào phương trình của E và giải phương trình
y2 = f(m) đối với y, tìm được nghiệm u
o Điểm cần tìm là M = (m, u)

4 Trở ngại: Chỉ có khoảng ½ số phần tử của Fp là thặng


dư bậc 2 -> xác suất tìm được u là ½ -> xác suất 31
nhúng thành công là ½.
Sử dụng hệ số nhúng
1 Xác định giới hạn << đối với  

 
2 Tính hệ số nhúng

Đối với mỗi số m cần nhúng, ánh xạ 𝑚 thành 𝑚'∈ [𝑙𝑚, 𝑙𝑚+𝑙−1]
3
sao cho f(𝑚') là thặng dư bậc 2. Xác suất thất bại là 2−𝑙

4 Nhúng 𝑚' thành điểm M bằng phương pháp đã biết

 
5 Từ ' tìm lại 𝑚 bằng công thức
32
Ví dụ:

Khi không dùng hệ số nhúng

m f(m)
0 2 không tồn tại
1 6 26, 41
2 16 4, 63
3 38 không tồn tại
4 11 không tồn tại
5 8 không tồn tại
33
Ví dụ:

 
Khi dùng hệ số nhúng ( = 11)

m lm lm+l1 m' f(m') M

0 0 10 1 6 26 (1, 26) 0
1 11 21 11 26 19 (11, 19) 1
2 22 32 24 29 37 (24, 37) 2
3 33 43 33 59 40 (33, 40) 3
4 44 54 47 49 60 (47, 60) 4
5 55 65 55 47 39 (55, 39) 5 34
Ứng Dụng

Sinh số ngẫu nhiên,


Tiền mã hóa

Blockchain

35
Độ an toàn của hệ mật ECC

ECC Key Size RSA Key Size Key Size AES Key
Ratio
163 1024 1:6

256 3072 1 : 12 128

384 7680 1 : 20 192

512 15360 1 : 30 256

36
05
Bài tập

37
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhấ
t của hai số a = 1573, b = 308
  Thuật toán:
    Cho b mod m
1. (A1, A2, A3) = (1, 0, m) (B1, B2, B3) = (0, 1, b)

2. Q = A div B B = A mod B
Tính chất (3): 3 3 3 3 3

() = () . () 3. B1 = A1 – Q*B1 B2 = A2 – Q*B2
hoặc m =4. ()(A1 A2 A3) = (B1, B2, B3)

5. If B3 = 0: gcd (b, m) = A1

Else B3 =1: gcd (b, m) = 1

b-1 mod m = B2
38
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

(A1, A2, A3) = (1, 0, m)

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573 

39
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

(B1, B2, B3) = (0, 1, b)


Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

40
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

Q = A3 div B3

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

41
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

B3 = A3 mod B3

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

5  33 

42
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

B1 = A1 – Q*B1

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

5  1  33 

43
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

B2 = A2 – Q*B2

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

5  1  -5  33 

44
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

(A1 A2 A3) = (B1, B2, B3)

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

5  0  1  308  1  -5  33 

45
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn nhất
 của hai số a = 1573, b = 308
Giải

Bảng 7:

Q  A 1  A 2  A3   B 1  B2   B 3 
-  1  0  1573  0  1  308 

5  0  1  308  1  -5  33 

9  1  -5  33  -9  45  11 

3  -9  45  11  27  -140  0 

46
Bảng 3:

Q  r  t 
-  1573  1 

-  308  0 

5  33  -5 

9  11  45 

3  0 

47
Bài 2: Tìm số nghịch đảo (nếu có) của 30 theo môđun 101 

  Thuật toán Euclide mở rộng: Cho b mod m


1. (A1, A2, A3) = (1, 0, m) (B1, B2, B3) = (0, 1, b)

2. Q = A3 div B3 B3 = A3 mod B3

3. B1 = A1 – Q*B1 B2 = A2 – Q*B2
Tính chất
4. (A(3):A A ) = (B , B , B )
1 2 3 1 2 3
() = () . ()
5. If B = 0: gcd (b, m) = A1
hoặc m 3= ()
Else B3 =1: gcd (b, m) = 1

b-1 mod m = B2
Định nghĩa: Nếu số nguyên dương x < b thỏa mãn x*b mod m = 1 thì x là
nghịch đảo của b mod m, kí hiệu b-1 mod m.

48
Bài 2: Tìm số nghịch đảo (nếu có) của 30 theo môđun 101 
Giải
Cách 1: Sử dụng thuật toán Euclide mở rộng: Tìm 30-1mod 101 
Q  A1  A2  A3  B1  B2  B3 
-  1  0  101  0  1  30 
3  0  1  30  1  -3  11 
2  1  -3  11  -2  7  8 

1  -2  7  8  3  -10  3 
2  3  -10  3  -8  27  2 
1  -8  27  2  11  -37  1 

=> 30-1mod 101 = -37 mod 101 = 64 


=> 64*30 mod 101 ≡ 1  49
Cách 2:  
b = 30; m = 101
⇨ Tìm x sao cho x*b = y*m + 1
Ta có:
⇨ x = = = 3y +
o r1 = (0 r130) (*)
o 30r1 = 11y + 1
⇨ y = = 2r1 +
o r2 = (0 r211) (**)
o r1 =
Chọn r2 = 5 thỏa (**) r1 = 7 thỏa (*) y = 2r1 + r2 = 19
⇨ x = 3y + r1 = 3.19 + 7 = 64

50
Bài 3: Tìm phần tử nghịch đảo của 3 trong Z*31
Giả sử b là nghịch đảo của 3 trong Z *31
 3.b ≡ 1 mod 31
 3.b mod 31 ≡ 1
 b = 3-1 mod 31
Áp dụng thuật toán Euclide mở rộng tính: b = 3 -1 mod 31

i ri qi xi yi

-1 31   1 0

0 3   0 1

1 1 10 1 -10

2 0 3    

Ta có: b = 3-1 mod 31 = -10 mod 31 = 21


51
Nghịch đảo của 3 trong Z*31 là: 21
Bài 4: Tìm khóa bí mật của hệ mật RSA với p=61, q=29 biết khóa công khai
e=19. Tính bản mã của bản rõ m=37 và tiến hành giải mã ngược lại để kiểm tra
lại kết quả

1. Tính khóa bí mật


Trong hệ mật RSA ta có:
n = p.q = 61.29 = 1769
 Φ(n) = Φ(p.q) = Φ(p).Φ(q)
 Φ(1769) = Φ(61). Φ(29) = 60.28 = 1680
 Sô mũ giải mã:
d = e-1 mod Φ(n) = 19-1 mod 1680
Sử dụng thuật toán Euclide mở rộng tính 19 -1 mod 1680

52
Q A1 A2 A3 B1 B2 B3

- 1 0 1680 0 1 19

88 0 1 19 1 -88 8

2 1 -88 8 -2 177 3

2 -2 177 3 5 -422 2

1 5 -422 2 -7 619 1

Số mũ giải mã d = 19-1 mod 1680 = 619

53
2. Mã hóa bản tin với m = 37
Trong hệ mật RSA, ta có bản mã: c = m e mod n = 3719 mod 1769
Áp dụng thuật toán nhân bình phương có lặp ta tính:
c = 3719 mod 1769
19 = 10011 = 20 + 21 + 24
 t=4

i 0 1 2 3 4

ki 1 1 0 0 1

A 37 1369 790 1412 81

b 37 1121 1121 1121 582

 Bản mã: c = 3719 mod 1769 = 582

54
3. Giải mã
Để giải mã, ta tìm: m = cd mod n
 m = 582619 mod 1769
619 = 1001101011 = 20 + 21 + 23 + 25 + 26 + 29
 t=9
i 0 1 2 3 4 5 6 7 8 9
ki 1 1 0 1 0 1 1 0 0 1

A 582 845 1118 1010 1156 741 691 1620 973 314

b 582 8 8 1004 1004 984 648 648 648 37

 Vậy bản rõ ban đầu:


m = 582619 mod 1769 = 37
55
 
Bài 5: Tính JACOBI (158, 235)
  Tính chất (1): m ≡ m mod n -> () ≡ ()
  1 2

 Tính chất (2): () =

Tính
 Tínhchất (3):() = () . () hoặc m =
chất (3): ()
() = () . ()
Tínhhoặc
chất (4):
m =(mn) () =

 Tính chất (5): () = 1

Giải
 
= . = .= = = = 1

56
Bài 6: Hãy tính các căn bậc hai của 12 mod 37

57
Bài 6: Hãy tính các căn bậc hai của 12 mod 37
Giải
 - Ta có 37 là số nguyên tố và 37 ≡ 5 mod 8
- Tính d = a(p-1)/4 mod p = 129 mod 37
- Áp dụng thuật toán bình phương có lặp ta có:
121 = 12
122 = 33
124 = 16
128 = 34
129 = 121. 128 = 12 . 34 = 408
⇨ d = 408 mod 37 = 1
⇨ Vì d = 1 => r = (a)(p+3)/8 mod p = mod 37
⇨ r=7
Vậy có 2 căn bậc hai (7, 30)
58
Bài 7: Tìm r với r2 ≡ 5 (mod 41)
Giải

  p là số nguyên tố Ф(p) = p - 1
Φ(p) = 41 –1 = 40
Áp dụng định lý nếu α € Z*41 là phần tử sinh khi đó β = αi mod n là
phần tử sinh khi và chỉ khi gcd(i, Φ(p)) = 1

Z*41 = {1, 3, 7, 9, 11, 13, 17, 21, 23, 27, 29, 31, 33, 37, 39}

Căn bậc hai của r2 ≡ 5 mod 41:


r = 13 vì 132 = 169 ≡ 5 mod 41

59
Bài 8: Cho đường cong E={(x,y) :y2=x3+x+ 6 mod 11}
Xác định tất cả các điểm của đường cong.
Tính tất cả các giá trị của kα với 1< k <14, trong đó α= (2,7) ECC
ElGamal encryption:
+ Tính khóa công khai biết khóa bí mật là 6
+ Tính khóa công khai biết khóa bí mật là 2
+ Tính khóa công khai biết khóa bí mật là 7
Với khóa bí mật của người nhận là 7. Tham số ngẫu nhiên là 3.
+ Mã hóa thông điệp 10
+ Giải mã và kiểm chứng

60
Xác định tất cả các điểm của đường cong
x y là căn bậc
hai của
0 6 N  
1 8 N  
2 5 Y 4, 7
3 3 Y 5, 6
4 8 N  
5 4 Y 2, 9
6 8 N  
7 4 Y 2, 9
8 9 Y 3,8
9 7 N  
10 4 Y 2,9

Vậy có 13 điểm trên đường cong Elliptic là

(2, 4) (2, 7) (3, 5) (3, 6) (5, 2) (5, 9) (7, 2)


61
(7, 9) (8, 3) (8, 8) (10, 2) (10, 9)  ∞  
Tính giá trị kα và xác định kP từ kS

EC: y2 = x3 + x + 6 mod 11
Tìm tất cả điểm của đường cong, ta có:
x  = 6 → y = = (loại)
x  = 0 → y = = (loại) x=7
x = 1 → y = = (loại)  y = = 2 mod 11
x=2 vậy P7 (7, 2) → P8(7, -2) → P8(7, 9)
 y = = 4 mod 11 x=8
vậy P1 (2, 4) → P2(2, -4) → P2(2, 7)  y = = 3 mod 11
x=3 vậy P9 (8, 3) → P8(8, -3) → P10(8, 8)
 y = = 6 mod 11 x = 9 → y = = (loại)
vậy P3 (3, 6) → P4(3, -6) → P4(3, 7) x = 10
x = 4 → y = = (loại)
x=5 y  = = 2 mod 11
vậy P11 (10, 2) → P8(10, -2) → P12(10, 9)
y  = = 2 mod 11 Và P13 là điểm vô cùng ()
vậy P5 (5, 2) → P5(5, -2) → P6(5, 9)

62
Mã hóa và giải mã
Y2 = x3 + x +6 mod 11
Chọn 1 điểm trên đường cong : P = (2,7), k = 3
 Sinh cặp khóa :
- Khóa bí mật : d =7
- Khóa công khai : Q = d*P = 7(2,7)= (7,2)
 Nhúng m=10 vào đường cong ta được :
- Y2 = 103 + 10 +6 mod11 = 4 ⇒ y= 2
 M(10,2) 
 Mã hóa :
- C1 =kP= 3(2,7)= (8,3);
- C2= M + kQ = (10,2) + 3(7,2) = (2,4)
 C = [(8,3),(2,4)]
 Giải mã :
M = C2 -dC1= (2,4) – 7(8,3) = (2,4) – (3,5) = (2,4)+ (3,6) = (10,2) 63

You might also like