You are on page 1of 35

BÀI THUYẾT TRÌNH

CHỦ ĐỀ: MẬT MÃ CÔNG


KHAI ECC VÀ ỨNG DỤNG
A. THAM SỐ VÀ KIỂU DỮ
LIỆU CỦA ECC
01 Hệ mật mã công khai ECC

Được xây dựng trên cơ sở bài toán


logarit trên đường cong Elliptic.

Hệ mật mã công khai ECC cung


cấp đầy đủ 4 dịch vụ an ninh:
Mã hóa, xác thực, ký số và trao đổi
khóa.
02 Các tham số của hệ mật mã hóa
ECC
• Tham số hệ mật mã ECC trên trường nguyên tố hữu hạn Fp
T=(p,a,b,G,n,h)
Trong đó :
p: là số nguyên dương xác định trường nguyên tố hữu hạn Fp và
[𝑙𝑜𝑔2p] ∈ {192,224,256,384,512}
a,b : Là 2 hệ số a,b ∈ Fp, xác định đường cong Elliptic E(Fp) trên trường
Fp :

E: 𝑦2 mod p=( 𝑥3+ax+b) mod p


G: Là điểm cơ sở thuộc E(Fp)
n : Là một số nguyên tố và là thứ tự của điểm cơ sở G.
h : Là phần phụ đại số (cofactor) thỏa mãn h= #E(Fp)/n. Với #E(Fp) là số các
điểm thuộc đường cong E(Fp).
02 Các tham số của hệ mật mã hóa
ECC
• Tham số hệ mật mã ECC trên trường nhị phân hữu hạn 𝑭𝒎𝟐 Y=(m,f(x),a,b,G,n,h)
Trong đó :
m: là số nguyên dương xác định trường nhị phân hữu hạn F2m và m ∈
{163,233,239,283,409,571}
f(x) : Là một đa thức bất khả quy, có bậc m và là đa thức cơ sở biểu diễn trường
F2m
a,b : Là 2 hệ số a,b ∈ F2m xác định đường cong Elliptic E(F2m) trên trường F2m
:
E:𝑦2+x.y= 𝑥3+ a𝑥2+b
G: Là điểm cơ sở thuộc E(Fp)
n : Là một số nguyên tố và là thứ tự của điểm cơ sở G.
h : Là phần phụ đại số (cofactor) thỏa mãn h = #E (F2m)/n. Với #E(F2m) là số các
điểm thuộc đường cong E(F2m).
03 Các kiểu dữ liệu trong hệ mật mã
ECC

Hệ mật mã công khai ECC sử dụng 5


kiểu dữ liệu có thể chuyển đổi được
cho nhau đó là :
- Kiểu xâu bit
- Kiểu số nguyên
- Kiểu điểm trên đường cong Elliptic
- Kiểu xâu Octect
- Kiểu thành phần trường ( các thành
phần trong trường Fp hoặc F2m).
B. CÁC THUẬT TOÁN EEC
01 Thuật toán sinh khóa
Đường cong Elliptic với tham số T (p, a, b, G, n, h)
Input hoặc T (m, f(x), a, b, G, n, h)

Output: Khóa công khai và khóa bí mật của ECC

Sinh ngẫu nhiên số nguyên Khóa bí mật là (k, Q), khóa


dương k với k < n Tính điểm Q = k. G công khai là Q
02 Thuật toán trao đổi khóa ECDH
Input: Alice và Bob thống nhất đường cong Elliptic với tham số T (P. a. b, g, n, h) hoặc
T (m, f(x), a, b, G, nh)

3.Bob sinh ngẫu nhiên 1


số nguyên dương < n

2.Alice tính điểm PA = x G 4.Bob tỉnh điểm = x G và gửi


và gửi cho Bob cho Alice
Ouput

1.Alice sinh ngẫu nhiên 1 5.Khóa công khai của Alice là, Alice tính
số nguyên dương khóa bí mật chia sẻ
K = x Khóa công khai của Bob là Bob
tinh khóa bí mật chia sẻ K = X
 Alice và Bob có khả năng tính toán độc lập được khóa K chia sẻ bởi:
K = x = x (x G) = X
03 Thuật toán chữ ký điện tử ECDSA
Input: Đường cong Elliptic với tham số T (p, a, b, G, n, h) hoặc T (m, f (x), a, b, G,
nh), khóa bí mậtk và thông điệp M

Chuyên tọa độ từ kiều trường sang


kiêu số nguyên Tinh = mod n. Nếu r
= 0, quay về bước 2

Sinh ngẫu nhiên d (0 < d < n). Tính giá trị s = ( (e +k x r ) x ) mod
Tính điểm = x G n. Nếu s = 0, quay về bước 2
Output: Chữ ký
điện tử của M

Tính giá trị băm của thông Chữ ký điện tử thông điệp M là
điệp M (s)
C. ƯU ĐIỂM
ELIPTICS
01 Mô hình mã hóa Eliptics
• Thuật toán mã hóa và giải mã của mô hình ECIES được đề xuất bởi 2 nhà khoa học
Bellare và Roga vay, và là một biến thể của hệ mật mã hóa công khai ElGamal,
ECIES đã được chuẩn hóa bởi chuẩn ANSI X9.63 và ISO / IEC 15946 3.

Trong ECIES, sử dụng 2 khóa, K1 và K2. Trong đó Kl sẽ được sử dụng để mã hóa


thông điệp truyền bằng hệ mật mã khóa đối xứng, K2 được sử dụng để xác thực kết
quả của bàn mã.
02 Mô hình mã hóa Eliptics

• Mô hình ECIES sử dụng các hàm chức năng sau:

KDF (Key Derivation Function): Là hàm sinh khóa (k1, k2) từ điểm R và hoành độ x,
của điểm Z.
ENC: Là 1 hàm mã hóa khóa đối xứng. Ví dụ như AES.
MAC: Hàm sinh mã xác thực thông báo. Ví dụ HMAC.
03 Ưu điểm mã hóa Eliptics

Hệ mật mã ECC cung cấp các dịch vụ an ninh như sau:

Trao đổi khóa an toàn


Chống nghe lén
Ký số
Chống chối bỏ
04 Ưu điểm mã hóa Eliptics
• Hệ mật mã ECC ở cùng độ an toàn với hệ mật mã RSA chỉ cần khóa có độ lớn bé hơn
rất nhiều so với khóa của RSA. Chính nhờ tính chất này, việc thực thi hệ mật mã ECC
có những ưu điểm sau:

Đòi hỏi năng lực tính toán thấp


Tiết kiệm bộ nhớ
Tiết kiệm băng thông
Tiết kiệm năng lượng
ỨNG DỤNG CỦA ECC :
D. TRAO ĐỔI KHÓA
DIFFIE-HELLMAN
01 Giao thức Diffie-Hellman
• Là mô ̣t trong những giao thức phân
phối và thỏa thuận khóa kết hợp
• Sử dụng khóa công khai để trao đổi
khóa bí mật
• Cung cấp một quy trình kết hợp
với việc sử dụng các bài toán khó,
giao thức cho phép 2 bên thỏa
thuận và xác định khóa chung mà
không cần truyền khóa qua môi
trường mạng Internet
Ví dụ minh họa ý tưởng cơ bản của việc trao đổi khóa :
01 Giao thức Diffie-Hellman

Bước 1: Bob và Alice đều tự chọn cho mình 1 màu bí mật, không ai ngoài
chính bản thân họ biết về màu đó. Ngoài môi trường mạng Internet công
khai thì có sẵn 1 màu, công khai, và ai cũng biết màu đó là gì
01 Giao thức Diffie-Hellman

Bước 2: Alice và Bob trộn màu công khai đã biết chung (màu vàng) với
màu bí mật riêng của mỗi người.
01 Giao thức Diffie-Hellman

Bước 3: Bob và Alice đã sẵn sàng cho việc thỏa thuận khóa. Họ sẽ gửi màu
vừa trộn được ở Bước 2 cho nhau qua môi trường Internet, người thứ 3 cũng
có thể nhâ ̣n được màu này nhưng không ảnh hưởng tới tính bí mâ ̣t giữa Bob và
Alice.
01 Giao thức Diffie-Hellman

Bước 4: Mỗi người sẽ trộn màu bí mật riêng ban đầu của mình, với màu
vừa nhận được khi họ trao đổi với nhau ở bước 3. Và màu trộn ra cuối
cùng này chính là hỗn hợp màu chung được tạo thành từ 3 màu
02 Trao đổi khóa Diffie-Hellman trong ECC

• Hai bên A và B cần tạo khóa phiên bí mật trao đổi trong một kênh
truyền công khai, hai bên cùng thỏa thuận điểm cơ sở P trên E.
• Bên A tạo khóa bí mật dA và gửi giá trị dAP cho bên B.
• bên B tạo khóa bí mật dB nhân với P sau đó gửi lại cho A. Khi đó,
khóa phiên của bên A sẽ là KA = dAdBP, và của bên B sẽ là KB = dBdAP.
• KA = KB, khóa này chỉ riêng hai bên A và B có thể tính được.
02 Trao đổi khóa Diffie-Hellman trong ECC

• Để tìm được khóa chia sẻ KA hoặc KB, hacker buộc phải tìm được cả 2
khóa bí mật dA,dB trong khi chỉ có thể bắt được thông tin trên đường
truyền là dAP và dBP, khi biết P, hacker buộc phải giải bài toán
Logarithm rời rạc.
• dA = logP (dAP) và dB = logP (dBP) và đây là 2 bài toán khó không giải
được trong thời gian đa thức
02 Trao đổi khóa Diffie-Hellman trong ECC

Minh họa sử dụng python với thư viê ̣n đường cong elliptic(ECPy) :
• Đường cong sử dụng: secp256k1
• Khóa công khai: điểm cơ sở G của đường cong
• Khóa bí mật của Alice: số nguyên A =3
• Khóa bí mật của Bob: số nguyên B =7
02 Trao đổi khóa Diffie-Hellman trong ECC

Code:
02 Trao đổi khóa Diffie-Hellman trong ECC

Kết quả:
• Điểm A_BG nằm trên đường
cong E rồi, sau đó có thể sử
dụng tọa độ của điểm này để
thực hiện các thuật toán mã
hóa dựa trên đường cong
Elliptic.
• Do tính chất của đường cong
Elliptic. Để tìm được khóa bí
mâ ̣t chung giữa Alice và Bob,
người thứ 3 buộc phải tìm
được khóa bí mật của 2 người,
bằng cách giải 2 bài toán
logarithm rời rạc.
E. ỨNG DỤNG CỦA ECC
TRONG BITCOIN
01 Bảo mật chữ kí số trong bitcoin

a, Mô hình của một giao dịch bitcoin


*Chữ kí số và địa chỉ người dùng
- Mỗi người trong giao dịch sẽ có một Signing
Key(SK) – Private Key đc tạo ra tự động hoặc do
người dùng tự định nghĩa từ một chuỗi gồm 256 bit
- Mỗi người cũng có một public key được tạo ra từ
private key, public key này còn gọi là địa chỉ của tài
khoản nơi lưu trữ bitcoin.
01 Bảo mật chữ kí số trong bitcoin

a, Mô hình của một giao dịch bitcoin


* Thực hiện giao dịch
Bên gửi(Alice) Bên nhận(Bob)

Elliptic Curve Digital


Signature Algorithm
(ECDSA)
01 Bảo mật chữ kí số trong bitcoin

b, Tạo và xác thực chữ kí số bằng thuật toán Eliptic


Curve
* Tạo chữ kí số (phía Alice)
- M: Giá trị khi bản tin cần gửi đc đưa hash qua SHA-
256
- V: Điểm cơ bản
- a: là 1 chuỗi số được chọn ngẫn nhiên
- n: bậc của điểm
- Cặp r và s là 2 giá trị tạo nên chữ kí số
VÍ DỤ:
M = 17 (dữ liệu)
n = 79 (bậc của điểm)
V = (2, 22) (điểm cơ bản)
SK = 2 (khóa private)
Tạo chữ kí:

1. Chọn một số ngẫu nhiên: 2. Tính điểm (x,y)


a = rand (1, n – 1) (x, y) = 3V
a = rand (1, 79 – 1) (x, y) = V + 2V
a=3 (x, y) = (2, 22) + (52, 7)
(x, y) = (62, 63)
x = 62
y = 63

3. Tìm r: 4. Tìm s:
r = x mod n s = (M + r * SK) / a mod n
r = 62 mod 79 s = (17 + 62 * 2) / 3 mod 79
r = 62 s = (17 + 124) / 3 mod 79
s = 141/3 mod 79
s = 47 mod 79
s = 47
01 Bảo mật chữ kí số trong bitcoin

b, Tạo và xác thực chữ kí số bằng thuật toán Eliptic


Curve
* Xác thực chữ kí số(phía Bob)
VÍ DỤ:
M = 17 (dữ liệu)
Xác thực chữ kí: n = 79 (bậc của điểm)
V = (2, 22) (điểm cơ bản)
1. Tính toán w: 2. Tính toán u: SK = 2 (khóa private)
w = s-1 mod n p = Mw mod n VK = (52 , 7)
w = 47-1 mod 79 p = 17 * 37 mod 79
w = 37 p = 629 mod 79
p = 76

3. Tính toán v: 4. Tính điểm (x, y):


q = rw mod n (x, y) = uG + vQ
q = 62 * 37 mod 79 vQ = (11, 20)
q = 2294 mod 79 uG = (62, 4)
q=3 => (x, y) = (62, 63)
Vai trò của thành viên

A THAM SỐ VÀ KIỂU DỮ LIỆU EEC – Đào Thanh Tùng

B CÁC THUẬT TOÁN EEC – Lê Ngọc Khôi

C ƯU ĐIỂM ELIPTICS - Nguyễn Phú Đức

D ỨNG DỤNG EEC – Cao Quốc Tuấn

E ỨNG DỤNG EEC – Phạm Việt Hùng


F. Thank you

You might also like