You are on page 1of 27

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

TIỂU LUẬN KẾT THÚC MÔN HỌC


AN NINH MẠNG THÔNG TIN

Đề tài : Mật mã hóa khóa công khai sử dụng đường


cong elliptic và ứng dụng.

GIẢNG VIÊN: PHẠM ANH THƯ


NHÓM : 16
SINH VIÊN: CHU TRUNG DŨNG B17DCVT082
PHẠM THANH HƯNG B17DCVT162
ĐÀO DUY SÁNG B17DCVT330

Hà Nội – 06/2021
Nhóm16 : An ninh mạng thông tin

MỤC LỤC

DANH MỤC HÌNH VẼ...................................................................................................................3


MỞ ĐẦU..........................................................................................................................................4
CHƯƠNG 1: LÝ THUYẾT VỀ ĐƯỜNG CONG ELLIPTICE( Fp)..............................................5
1.1 Định nghĩa, tính chất của đường cong..........................................................................5
1.1.1Định nghĩa..................................................................................................................5
1.1.2Tính chất....................................................................................................................5
CHƯƠNG 2: MẬT MÃ HÓA KHÓA CÔNG KHAI SỬ DỤNG ĐƯỜNG CONG ELLIPTIC.....8
2.1 Các tham số của hệ mật mã hóa ECC...........................................................................8
2.1.1 Đương cong eliptic trên trường nguyên tố hữu hạn Fp..........................................8
2.1.1.1 Trường hữu hạn....................................................................................................8
2.1.1.2 Đường cong Elliptic trên trường Fp có dạng như sau:...........................................8
2.1.2. Tham số hệ mật mã ECC trên trường nhị phân hữu hạn..........................................9
CHƯƠNG 3: ƯU ĐIỂM CỦA ECC VÀ SO SÁNH VỚI RSA......................................................10
3.1 Ưu điểm của EEC.........................................................................................................10
3.2 So sánh ECDSA và RSA..............................................................................................12
CHƯƠNG 4: CHỮ KÝ SỐ SỬ DỤNG ĐƯỜNG CONG ELLIPTIC VÀ MỘT SỐ ỨNG DỤNG
........................................................................................................................................................14
4.1 Chữ ký số sử dụng đường cong elliptic.......................................................................14
4.1.1 Tạo chữ ký số.............................................................................................................15
4.1.2 Xác Thực chữ ký số...................................................................................................15
4.1.3 Sơ đồ chữ ký số trên đường cong eliptic (ECDSA).................................................15
4.1.4 Tính bảo mật của ECDSA.........................................................................................16
4.2 Ứng dụng của ECC.......................................................................................................17
4.2.1 Ứng dụng của hệ mật mã hóa khóa công khai sử dụng đường cong eliptic và
ECDSA trong đồng tiền ảo Ethereum...........................................................................................18
4.2.2 Elliptic-curve Diffie–Hellman (ECDH)..................................................................22
4.2.3 Ứng dụng vào các thiết bị có tài nguyên hạn chế:.................................................23
KẾT LUẬN....................................................................................................................................26
TÀI LIỆU THAM KHẢO..............................................................................................................26

2
Nhóm16 : An ninh mạng thông tin

DANH MỤC HÌNH VẼ

3
Nhóm16 : An ninh mạng thông tin

MỞ ĐẦU
Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và an
toàn thông tin. Trên thế giới, mật mã học đã được ra đời từ thời La Mã cổ đại và ngày
càng được nghiên cứu, phát triển đạt được những thành tựu to lớn. Trong mật mã học,
vấn đề bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã
hóa khóa công khai vấn đề xác thực là vô cùng quan trọng. Để giải quyết vấn đề trên
người ta đưa ra một cách giải quyết hiệu quả, đó là chữ ký số.

Với sự bùng nổ của mạng Internet hiện nay, mạng máy tính đang đóng vai trò
thiết yếu trong mọi lĩnh vực hoạt động của xã hội, và khi nó trở thành phương tiện
điều hành các hệ thống thì nhu cầu bảo mật thông tin đặt lên hàng đầu. Việc sử dụng
chữ ký số là một giải pháp hữu hiệu, ngày càng được ứng dụng nhiều trong thực tế,
không chỉ giới hạn trong ngành công nghệ thông tin, mật mã học mà còn được áp
dụng nhiều trong lĩnh vực khác như ngân hàng, viễn thông…

Mật mã học khóa công khai tạo ra chữ ký số và ứng dụng vào các tài liệu. Hệ mật
mã hóa RSA – hệ mã hóa điển hình của mật mã hóa công khai cùng với hàm băm mật
mã học một chiều chính là những công cụ chính trong việc tạo ra chữ ký số điện tử.
Trong bài tiểu luận này, nhóm tập trung vào chữ ký số trên ECC và ứng dụng của
nó. Nội dung nghiên cứu được chia làm 4 phần:

 Lý thuyết đường cong elliptic


 Hệt mật mã ECC
 Ưu điểm và ứng dụng của ECC
 Chữ ký số và hệ mật mã của đường cong

4
Nhóm16 : An ninh mạng thông tin

CHƯƠNG 1: LÝ THUYẾT VỀ ĐƯỜNG CONG ELLIPTICE( F p)


1.1 Định nghĩa, tính chất của đường cong
1.1.1 Định nghĩa
Thông thường, một đường cong elliptic được định nghĩa bằng phương trình có
dạng như sau : y 2=x 3 +ax +b (1) và có điều kiện là : 4 a3 +27 b 2 ≠ 0

Hình 1: Trường đồ thị của đường cong elliptic

1.1.2 Tính chất


Nếu hai điểm P1 (x1, y1 ) và P2 (x2, y2) với x1 ≠ x2 nằm trên đường cùng một
đường cong elliptic E, thì đường thẳng qua hai điểm P1 và P2 sẽ cắt một điểm duy
nhất P3 ( x3, y3) có thể xác định thông qua P1 và P2 nằm trên đường cong E.
Tiếp tuyến của đường cong tại điểm bất kỳ P(x, y) trên đường cong E cũng cắt đường
cong elliptic E tại một điểm duy nhất nằm trên đường E, điểm này cũng có thể xác
định được thông qua P.

5
Nhóm16 : An ninh mạng thông tin

1.1.2.1 Phép cộng trong đường cong elliptic


Giả sử, ta có A( x 1, y 1) và B( x 2, y 2) là hai điểm thuộc một đường cong E.

Nếu x 1 = x 2 và y 1 = - y 2 thì ta có A + B = 0

Ngược lại thì A + B = C( x 3, y 3) ∈ E trong đó:

x 3= λ2−x 1−x 2
{ y 3=λ ( x 1−x 3 )− y1

Với:

y 2− y 1

{
x −x
λ= 2 2 1
3 x1 + a
2 y1
, nếu A ≠ B

, nếu A=B

Vậy nếu A ≠ B thì:


C=¿

Nếu A=B thì:

3 x 21 + a 2

C=
{( y 3=
x 3=(
x2 −x1
3 x 21 + a
x 2−x1 )
) −2 x 1

x( x1−x 3 )−x 1

Hình 2: Ví dụ về phép cộng trên đường cong Elliptic


6
Nhóm16 : An ninh mạng thông tin

Chú ý rằng các điểm ( x 3, y 3), ( x 3,- y 3) cũng nằm trên đường cong E và xét về mặt
hình học, thì các điểm ( x 1, y 1), ( x 2, y 2), ( x 3,- y 3) cũng nằm trên cùng một đường thẳng.

1.1.2.2 Phép nhân trong đường cong elliptic

Phép nhân một số nguyên k với một điểm P thuộc đường cong Elliptic E là điểm
Q (Q ∈ E) được xác định bằng cách cộng k lần điểm P:

kP = P + P + … + P (k lần phép cộng điểm P)

Vì vậy nếu G là một điểm thuộc đường cong Elliptic E thì với mỗi số nguyên
dương k luôn dễ dàng xác định được điểm Q = k x G.

Hình 3: Ví dụ về phép nhân 2 trên đường cong Elliptic

CHƯƠNG 2: MẬT MÃ HÓA KHÓA CÔNG KHAI SỬ DỤNG


ĐƯỜNG CONG ELLIPTIC
Hệ mật mã công khai ECC là hệ mật mã được xây dựng trên cơ sở bài toán logarit
rời rạc trong phép nhân xét trên các tập điểm thuộc đườ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.

7
Nhóm16 : An ninh mạng thông tin

2.1 Các tham số của hệ mật mã hóa ECC


2.1.1 Đương cong eliptic trên trường nguyên tố hữu hạn F p
2.1.1.1 Trường hữu hạn

Đường cong elliptic được xây dựng trên các trường hữu hạn. Có hai trường hữu
hạn đó là:

 Trường hữu hạn Fq với q là số nguyên tố.

 Trường hữu hạn Fq với q = 2m (m là một số nguyên)

Tùy thuộc vào trường hữu hạn Fq, với mỗi bậc của q, tồn tại nhiều đường cong
elliptic. Do đó, với một trường hữu hạn cố định có q phần tử và q lớn, có nhiều sự lựa
chọn nhóm đường cong elliptic.

2.1.1.2 Đường cong Elliptic trên trường F p có dạng như sau:

Định nghĩa các tham số của hệ mật mã ECC trên trường nguyên tố hữu hạn F p
bao gồm:
T = (p, a, b, G, n, h)

Trong đó:

 p: là số nguyên tố và lớn hơn 3


 a, b: là 2 hệ số a, b ∈ F p, sao cho thỏa mãn điều kiện 4 a2 +27 b2 ≢ 0
 G: là điểm cơ sở thuộc E ( F p)
 n: là một số nguyên và là thứ tự của điểm cơ sở G

 h: là phần phụ đại số thỏa mãn h = #E( F p ¿/n với Số lượng điểm của E( F p) là
#E( F p) thỏa định lý Hasse:

p+1−2 √ p ≤ ¿ E ( F p ) ≤ p+1+2 √ p

2.1.2. Tham số hệ mật mã ECC trên trường nhị phân hữu hạn

SECG định nghĩa các tham số của hệ mật mã ECC trên trường nhị phân hữu hạn
F m2 bao gồm các tham số sau:

Y = (m,f(x),a,b,G,n,h)
Trong đó:
8
Nhóm16 : An ninh mạng thông tin

 m: là số nguyên dương xác định trường nhị phân hữu hạn F 2 và


m

[log2 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 F m2

a,b: là hệ số a,b ∈ F m2 xác định đường cong elliptic E( F m2 ) trên trường ( F m2 ):

E: y 2 + xy=x 3 +a x 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
m m
 h: là phần phụ đại số (cofactor) thỏa mãn h = #E( F 2 )/n với #E( F 2 ) là các
số điểm thuộc đường cong E( F m2 )
m m
 Cùng với điểm O là điểm vô cực. Số lượng điểm của E( F 2 ) là #E( F 2 )
thỏa định lý Hasse:
m
 q+ 1−2 √ q ≤¿ E ( F 2 ) ≤ q+1+2 √ q
m
 Trong đó q = 2m. Ngoài ra, #E( F 2 ) là số chẵn.

9
Nhóm16 : An ninh mạng thông tin

CHƯƠNG 3: ƯU ĐIỂM ECC VÀ SO SÁNH VỚI RSA


3.1 Ưu điểm của EEC
Mật mã đường cong Elliptic (ECC) đã tồn tại từ giữa những năm 1980, nhưng nó
vẫn được coi là mã mới trong thế giới SSL và chỉ mới bắt đầu được chấp nhận trong
vài năm qua. ECC là một cách tiếp cận toán học khác về cơ bản để mã hóa so với thuật
toán RSA đáng kính. Đường cong elliptic là một hàm đại số (y2 = x3 + ax + b) trông
giống như một đường cong đối xứng song song với trục x khi được vẽ đồ thị. (Xem
hình bên dưới.) Cũng như các dạng mật mã khóa công khai khác, ECC dựa trên đặc
tính một chiều, trong đó dễ dàng thực hiện phép tính nhưng không thể đảo ngược hoặc
đảo ngược kết quả của phép tính để tìm ra các số ban đầu. ECC sử dụng các phép toán
khác với RSA để đạt được thuộc tính này. Cách dễ nhất để giải thích toán học này là -
đối với một đường cong elliptic, một đường sẽ chỉ đi qua ba điểm dọc theo đường
cong (P, Q và R) và điều đó bằng cách biết hai trong số các điểm (P và Q), điểm còn
lại (R) có thể được tính toán một cách dễ dàng, nhưng chỉ với R, hai cái còn lại, P và
Q, không thể suy ra được.

Hình 4: Đường cong eliptic 1

10
Nhóm16 : An ninh mạng thông tin

Hình 5: Đường cong eliptic 2

ECC được sử dụng trong cả chữ ký số thông qua Elliptic Curve DSA (ECDSA)
và trong trao đổi khóa qua Elliptic Curve Diffie-Hellman (ECDH). Các thuật toán này
được áp dụng trong các phần khác nhau của tiêu chuẩn SSL. Đầu tiên, chứng chỉ SSL
có thể được ký bằng ECDSA thay vì RSA. Việc thứ hai là quá trình máy chủ và máy
khách đang trao đổi các khóa phiên được sử dụng để mã hóa tất cả dữ liệu được gửi .
Trong trường hợp này, máy chủ và trình duyệt đều phải được định cấu hình để hỗ trợ
bộ mật mã ECDH.
Lợi ích quan trọng nhất của ECC đơn giản là mạnh hơn RSA đối với các kích
thước đang được sử dụng ngày nay. Kích thước khóa ECC thông thường là 256 bit
tương đương với khóa RSA 3072 bit và mạnh hơn 10.000 lần so với khóa RSA 2048
bit. Để đi trước sự tính toán của kẻ tấn công, các khóa RSA phải dài hơn. CA/.Diễn
đàn Trình duyệt và các nhà cung cấp trình duyệt hàng đầu đã chính thức kết thúc hỗ
trợ khóa RSA 1024 bit sau năm 2013, vì vậy tất cả các chứng chỉ SSL mới phải sử
dụng khóa dài gấp đôi. Hơn nữa, như thể hiện trong bảng dưới đây, kích thước khóa
RSA trong tương lai nhanh chóng mở rộng trong khi độ dài khóa ECC tăng tuyến tính
theo độ mạnh.
Một lợi ích bảo mật khác của ECC chỉ đơn giản là nó cung cấp một giải pháp thay
thế cho RSA và DSA . Nếu một điểm yếu chính trong RSA được phát hiện, ECC có
thể là giải pháp thay thế tốt nhất, đặc biệt nếu điểm yếu của RSA đột ngột yêu cầu tăng
mạnh kích thước khóa để bù đắp.

11
Nhóm16 : An ninh mạng thông tin

ECC cũng nhanh hơn vì một số lý do. Trước hết, các khóa nhỏ hơn có nghĩa là ít
dữ liệu phải được truyền từ máy chủ đến máy khách trong quá trình bắt tay SSL.
Ngoài ra, ECC yêu cầu ít năng lượng xử lý (CPU) và bộ nhớ hơn, dẫn đến thời gian
phản hồi và thông lượng trên các máy chủ Web nhanh hơn đáng kể khi nó được sử
dụng.
Lợi ích quan trọng thứ ba của việc sử dụng ECC là Perfect Forward Secrecy
(PFS). Mặc dù PFS không phải là thuộc tính của ECC, các bộ mật mã được hỗ trợ bởi
các máy chủ Web hiện đại và các trình duyệt triển khai PFS cũng triển khai ECC. Các
máy chủ web thích Ephemeral ECDH (ECDHE) sử dụng bộ mật mã như:
“TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA” nhận được lợi ích của cả ECC và
PFS.
3.2 So sánh ECDSA và RSA

Dưới đây là một số khác biệt giữa RSA và ECDSA:

 Kích thước dữ liệu cho RSA nhỏ hơn ECDSA.

 Kích cỡ khóa ECDSA nhỏ hơn kích cỡ khóa RSA, do đó, thông điệp được mã
hóa trong ECDSA nhỏ hơn.

 Việc tính toán trong ECDSA dễ dàng so với RSA:

ECDSA cung cấp khả năng tính toán nhanh hơn và ít dung lượng lưu trữ hơn

 Độ dài của khóa công khai và khóa bí mật ngắn hơn nhiều trong ECDSA. Kết
quả là thời gian xử lý nhanh hơn và yêu cầu về bộ nhớ và băng thông thấp hơn.

Lưu ý: “Một số nhà nghiên cứu đã phát hiện ra rằng ECDSA nhanh hơn RSA để
ký và giải mã tuy nhiên, ECDSA chậm hơn với việc xác minh và mã hóa chữ ký.

Từ những khác biệt trên, ta có thể rút ra kết luận về ECC cung cấp những ưu
điểm vượt trội so với RSA như sau:

 Nó cung cấp khả năng bảo mật cao hơn với kích thước khóa nhỏ hơn.

12
Nhóm16 : An ninh mạng thông tin

 Nó cung cấp các triển khai hiệu quả và nhỏ gọn cho các hoạt động mật mã yêu
cầu chip nhỏ hơn.

 Do chip nhỏ hơn sinh nhiệt ít hơn và tiêu thụ ít điện năng hơn.

 Nó hầu như phù hợp với các máy có băng thông thấp, khả năng tính toán thấp,
ít bộ nhớ.

 Nó có triển khai phần cứng dễ dàng hơn.

Tuy vậy, hai hệ mật mã hóa khóa công khai này không phải là không có những
nhược điểm. Một số nhược điểm của cả ECC và RSA có thể được kể đến như:

 Quá trình tạo khóa diễn ra rất chậm (so với mã hóa khóa đối xứng).

 Tốc độ mã hóa dữ liệu chậm.

 Độ dài bản tin phải nhỏ hơn độ dài bit nếu không thuật toán sẽ không được
thực hiện.

 RSA là thuật toán dựa trên bài toán logarit rời rạc, vì vậy mỗi lần khởi tạo RSA
cần phải tính toán hai số nguyên tố lớn p và q.

13
Nhóm16 : An ninh mạng thông tin

CHƯƠNG 4: CHỮ KÝ SỐ SỬ DỤNG ĐƯỜNG CONG ELLIPTIC


VÀ MỘT SỐ ỨNG DỤNG
4.1 Chữ ký số sử dụng đường cong elliptic
4.1.1 Tạo chữ ký số

Hình 6: Quy trình thực hiện để tạo chữ ký số

Quá trình tạo chữ ký số được thực hiện qua các bước:

 Dữ liệu cần được ký sẽ được đi qua hàm băm để tạo thành giá trị băm (bản tóm
lược).
 Giá trị băm sau đó sẽ được mã hóa bởi khóa bí mật của người gửi, tạo thành
chữ ký số.
 Chữ ký số sẽ được gắn vào dữ liệu ban đầu, tạo thành bản tin đã được ký số.

14
Nhóm16 : An ninh mạng thông tin

4.1.2 Xác Thực chữ ký số

Hình 7: Quy trình thực hiện để xác thực chữ ký số

Việc xác thực chữ ký số được thực hiện qua các bước:

 Bản tin đã được ký số sẽ được tách thành hai phần: Dữ liệu và chữ ký số.

 Chữ ký số sẽ được giải mã bằng khóa công khai của người gửi.

 Nếu chữ ký giải mà thành công thì tạo thành giá trị băm.

 Nếu không thể giải mã được chữ ký chứng tỏ bản tin không đúng người
gửi.

 Phần dữ liệu sẽ được đi qua hàm băm tương tự như ở phía người gửi tạo thành
giá trị băm.

 Giá trị băm của dữ liệu sẽ được so sánh với giá trị băm thu được ở quá trình
giải mã chữ ký số.

 Hai giá trị này trùng nhau chứng tỏ bản tin gửi đi vẫn toàn vẹn.

 Hai giá trị này khác nhau chứng tỏ bản tin đã bị thay đổi.
4.1.3 Sơ đồ chữ ký số trên đường cong eliptic (ECDSA)
Để thiết lập sơ đồ chữ ký số trên ECDSA (Elliptic Curve Digital Signture
Algorithm), các tham số cần phải xác định là: đường cong E trên trường hữu hạn Fq
với tham số p phù hợp và điểm cơ sở G  E( F q) (Generator point).

15
Nhóm16 : An ninh mạng thông tin

Sinh khóa:

1. Chọn số ngẫu nhiên d trong khoảng [2, n - 1] làm khóa bí mật.


2. Tính Q = dG làm khóa công khai.

Ký trên bản rõ m:

1. Chọn một số ngẫu nhiên k, 2 ≤ k ≤ n –1

2. Tính kG = ( x 1, y 1).

3. Tính r = x 1 mod n. Nếu r = 0, quay lại bước 1.

4. Tính k −1 mod n.

5. Tính s = k −1 (m + dr) mod n. Nếu s = 0, quay lại bước 1

6. Chữ ký trên thông điệp m là (r, s).

Kiểm tra chữ ký:

1. Kiểm tra r và s có là số tự nhiên trong khoảng [2, n - 1] không.

2. Tính w = s−1 mod n.

3. Tính u1 = mw (mod n) và u2 = rw (mod n).

4. Tính X = u1G + u2Q = ( x x , y y ).

5. Nếu X = 0 thì phủ nhận chữ ký. Ngược lại tính v = x x mod n

6. Chữ ký chỉ được chấp nhận nếu v = r

Chứng minh:

Nếu chữ ký (r, s) trên m là đúng thì:

 s = k −1(m + dr) mod n


 k  s−1 (m + dr)  s−1 m + s−1 rd  wm + wrd  u1 + u2d (mod n).
 Vì vậy, u1G + u2G = (u1 + u2d)G = kG.
 Suy ra v = r.

4.1.4 Tính bảo mật của ECDSA


ECDSA cần có tính bảo mật cao để có thể khẳng định sự tồn tại không thể làm
giả được, chống lại sự tấn công vào một bản tin đã được ký. Mục đích của kẻ tấn
công là có thể giả mạo A tạo các chữ ký hợp lệ trên bản tin M, sau khi đã có được các
bản tin có chữ ký của A và phân tích.
16
Nhóm16 : An ninh mạng thông tin

Khi thay thuật toán RSA bằng ECDSA, thì tốc độ thực hiện thuật toán được cải
thiện đáng kể. Việc thay thế này đạt được hiệu quả với việc cần dung lượng bộ nhớ ít
hơn khi sử dụng thuật toán RSA.

Các điều kiện an toàn cần thiết của thuật toán ECDSA là:
 Bài toán logarit rời rạc trên đường cong eliptic E(F q) là khó: nếu như điều
kiện này không được thỏa mãn, ta có thể chỉ cần tính logarit rời rạc với khóa công
khai là có thể lấy được khóa bí mật.
 Hàm băn được sử dụng phải là là hàm băm một chiều, tức là không thể tính
được bản rõ m từ giá trị băm H m

 Hàm băm được sử dụng phải chống xung đột, tức là không thể tồn tại hai giá
trị băm H m 1=H m 2 (nếu m1 và m2 khác nhau)

 Việc tạo k là một quá trình ngẫu nhiên không thể dự đoán được.

Các cách tấn công có thể có trên ECDSA có thể được phân loại như sau:
 Cách tấn công các bài toán logarit rời rạc đường cong elliptic.
 Cách tấn công trên hàm băm.
 Cách tấn công khác.

4.2 Ứng dụng của ECC


Trong thực tế, ECC đang được ứng dụng rất nhiều cho các ứng dụng bảo mật như:
bảo mật tài liệu, thông tin liên lạc nội bộ, cung cấp chữ ký số trong các dịch vụ nhắn
tin bảo mật như iMessage của Apple hay Blackberry Message của Blackberry. Ngoài
ra, ECC còn được ứng dụng trong việc trao đổi khóa bằng thuật toán Elliptic-curve
Diffie–Hellman. Thuật toán mã hóa khóa công khai thế hệ đầu như RSA vẫn đang
được sử dụng trong rất nhiều lĩnh vực, tuy vậy, trong những năm gần đây ECC đang
phát triển rất nhanh và được đánh giá là thuật toán sẽ thay thế cho RSA trong tương lai
gần.
Hiệu suất tính toán của ECDSA nhanh hơn vượt trội so với RSA, đây là một điều
rõ ràng, đã được chứng minh rất nhiều trong thực tế. Ngay cả với một phiên bản cũ của
OpenSSL không có tối ưu cho ECC, thời gian tính toán để tạo tạo một chữ ký ECDSA

17
Nhóm16 : An ninh mạng thông tin

với khóa 256-bit là nhanh hơn 20 lần so với một chữ ký RSA với khóa 2048-bit. Chính
vì thế, ECC là thuật toán thích hợp để tích hợp vào các thiết bị có tài nguyên hạn chế.
ECC có rất nhiều ứng dụng trong thực tế hiện nay, nhưng ứng dụng phổ biến nhất,
đưa ECC phát triển chính là ứng dụng trong các đồng tiền ảo.

4.2.1 Ứng dụng của hệ mật mã hóa khóa công khai sử dụng đường cong
eliptic và ECDSA trong đồng tiền ảo Ethereum.

Trong Ethereum (Bitcoin cũng tương tự) thì đường cong Elliptic được ứng dụng
trong 2 việc:

 Tạo ra địa chỉ ví


 Tạo chữ ký cho giao dịch

Tiền ảo Ethereum sử dụng đường cong tiêu chuẩn secp256k1 do Viện Tiêu chuẩn
và Kỹ thuật Quốc gia Mỹ (NIST) đặt ra. Đường cong này có công thức như sau:

y2 (mod p) = x3 + 7 (mod p)

Với p = 2256 – 232 – 29 – 28 – 27 – 26 – 25 – 24 – 1 = 2256 – 232 – 997. Đây là một số


nguyên tố rất lớn.

4.2.1.1 Tạo khóa công khai:

Đầu tiên, ta chọn một số ngẫu nhiên d A làm khóa bí mật. Số này phải thỏa mãn
nằm trong khoảng [2, 2256 – 1].

Trên đường cong Elliptic ta chọn một điểm cơ sở G  (generator point). Với
Ethereum thì điểm G này có giá trị:

G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9


59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448
A6855419 9C47D08F FB10D4B8
Theo tiêu chuẩn secp256k1.
Lúc này, khóa công khai PU sẽ là kết quả của phép nhân:
PU =d A × G

18
Nhóm16 : An ninh mạng thông tin

Dựa vào các tính chất của đường cong Eliptic, chắc chắn PU cũng là một điểm trên
đường cong này.

4.2.1.2 Tạo chữ ký


Chữ ký trong Ethereum cũng như một chữ ký thông thường, được biểu diễn bởi
một cặp số (r, s).
Để tạo ra cặp (r, s) này đầu tiên hệ thống sẽ phải chọn ra một số ngẫu nhiên k, số
này phải khác với khóa bí mật của người dùng.
Tiếp theo, hệ thống thực hiện phép nhân k với điểm cơ sở G (giống với quá trình
tạo public key) để tạo ra một một điểm P=k ×G. Kết quả của phép nhân này sẽ là điểm
P(x, y). Giá trị r chính là toạ độ x của điểm P (vì độ bảo mật của ECC là rất cao nên chỉ
cần giá trị x là đã đủ độ an toàn cần thiết, không cần lấy giá trị y).
Để tính được giá trị s, đầu tiên, hệ thống cần phải đưa bản tin cần ký qua hàm băm,
hàm băn được sử dụng trong Ethereum là hàm Keccak256. Giá trị sau khi băm của bản
tin ta có thể đặt là z. Lúc này, s sẽ được tính như sau:

s=k−1 ( z+ d a × r ) ( mod p)

4.2.1.3 Xác thực chữ ký


Để xác thực chữ ký có hợp lệ hay không, hệ thống chỉ cần một tham số là khóa
công khai của người gửi PU. Việc xác thực được thực hiện bằng cách tính:

P=s−1 × z ×G+ s−1 × r × PU

Tọa độ của điểm P nếu bằng tham số r trong chữ ký số thì đây là chữ ký hợp lệ.
Chứng minh điều này đã được thực hiện các phần trên.

4.2.1.4 Tạo ra địa chỉ ví

Từ một private key, một địa chỉ ví Ethereum được tạo ra như sau
 Tạo public key từ private key giống như bên trên ta đã trình bày.
 Tính giá trị băm của public key, giá trị của 20 byte cuối cùng trong public key sẽ
được sử dụng làm địa chỉ của ví. Hàm băm được sử dụng là Keccak-256

Ví dụ, khóa bí mật của một người dùng có giá trị (dạng hexa):

PR=5 bff 7 b2 a 9 bc 0049382 ece 299 b 1 fe 1 fef 82 d 5 b 517 d 1 d 05 be 3 d 6 dc 4 ae 3e1 aa 0047

19
Nhóm16 : An ninh mạng thông tin

Bằng phép nhân đường cong Elliptic, ta tính được public key là một điểm PU có
các giá trị tọa độ (dạng hexa) là:
x :1E866 A 709 A 022 B 7 A 56 C 5 F 372E5869094 EF 4300E1 EAB 8 A 7 B2892734499305447 E
y : FDBF 17E1C 96E5C 0 CF 28 D 4 ECE 1958 D 7 FA 16130 D 5 BF 93E9975 ABC 4 AE 6450 DBA 492
ghép vào ta sẽ có một public key:
PU =
0x1E866A709A022B7A56C5F372E5869094EF4300E1EAB8A7B2892734499305447
EFDBF17E1C96E5C0CF28D4ECE1958D7FA16130D5BF93E9975ABC4AE6450DB
A492

Áp dụng hàm băm vào public key, ta được giá trị:


H ( PU )=97 f 104 de 7 ced 45e912 ccf 1 b1 c 11 eea 10 ced 5 ea 3270 d 46 ceec 4 ce 1e53 d 6689 cd 0
Từ giá trị Hash này, lấy 20 bytes cuối cùng, ta có được địa chỉ ví là:
0 xc 11 eea 10 ced 5 ea 3270 d 46 ceec 4 ce 1e53 d 6689 cd 0
4.2.1.5 Ký giao dịch
Một raw transaction trong Ethereum sẽ trông như sau:

from: '0x937CDc3a7273269Fe43967E785D9e24D3C48C164',

gas: '0x3d0900',

gasPrice: 10000000000,

hash:
'0x228c53215e5ad0f9d6114a4f4adeb8e5359fbee1283aacb7fedb2ab1b212871b',

data:
'0x60fe47b100000000000000000000000000000000000000000000000000000000000
00003',

nonce: 34,

to: '0x6b4A7a46ad065b5fb142DEe92E9F4546982510fD',

20
Nhóm16 : An ninh mạng thông tin

value: '0x',

Sau khi ký, bản tin được broadcast lên mạng sẽ có nội dung như sau:

blockHash:
'0x7905dc70c9a0196fd2a1999568506026e5e4027c7fac88fd3b841df213c7918d',

blockNumber: 7719658,

from: '0x937CDc3a7273269Fe43967E785D9e24D3C48C164',

gas: '0x3d0900',

gasPrice: '10000000000',

hash:
'0x228c53215e5ad0f9d6114a4f4adeb8e5359fbee1283aacb7fedb2ab1b212871b',

input:
'0x60fe47b100000000000000000000000000000000000000000000000000000000000
00003',

nonce: 34,

r: '0x3dee14909e26ec8758cca4b386ec582cac5100767776454eec94343ac6f2de46',

s: '0x68869c7b5e4b4caa6b602e29f0787ae70a37833cc681c9463b139f30a2fe5de5',

to: '0x6b4A7a46ad065b5fb142DEe92E9F4546982510fD',

transactionIndex: 2,

v: '0x29',

21
Nhóm16 : An ninh mạng thông tin

value: '0',

};

Ta có thể để ý ở đây raw transaction cũ đã được thêm các trường r và s, đây chính
là chữ ký số của bản tin.
Bằng chữ ký số này, tất cả mọi máy khác trên hệ thống đều có thể dễ dàng xác
nhận bản tin được ký bởi : 0x937CDc3a7273269Fe43967E785D9e24D3C48C164.

4.2.2 Elliptic-curve Diffie–Hellman (ECDH).


Thuật toán Diffie-Hellman là thuật toán trao đổi khóa được sử dụng đầu tiên
trong lĩnh vực mật mã học. Thuật toán trao đổi khóa này cho phép hai bên tham gia
giao tiếp thiết lập một khóa bí mật dùng chung để mã hóa dữ liệu đường truyền giữa
hai bên một cách an toàn mà không cần đến việc thỏa thuận về khóa bí mật trước giữa
hai bên tham gia trao đổi. Khóa bí mật được tạo sau khi trao đổi khóa sẽ được dùng
để mã hóa dữ liệu bằng phương pháp mã hóa khóa đối xứng.

Elliptic-curve Diffie–Hellman (ECDH) là một biến thể cải tiến của thuật toán
Diffie–Hellman truyền thống, thuật toán này cho phép hai bên tham gia trao đổi, mỗi
bên có một cặp khóa được xây dựng trên đường cong elliptic, xây dưng được một bí
mật chung giữa hai bên trên một kênh thông tin không an toàn. Bí mật này có thể
được sử dụng làm khóa hoặc làm cơ sở để xây dựng một khóa khác. Sau đó, khóa sẽ
được mã hóa thông tin trao đổi giữa hai bên bằng phương pháp mã hóa khóa đối
xứng.

Việc thiết lập bí mật chung giữa hai bên được thực hiện như sau:

Giả sử, Alice muốn thiết lập một bí mật chung với Bob, nhưng giữa họ không có
một kênh truyền an toàn, thông tin đi qua kênh truyền của họ có thể bị nghe trộm.

Các tham số về đường cong Elliptic giữa 2 bên sẽ được thỏa thuận trước trên
kênh không an toàn.

Mỗi bên sẽ tạo ra một cặp khóa phù hợp cho mình dựa trên đường cong elliptic,
bao gồm một khóa riêng d và một khóa công khai Q = dG. Cách tạo khóa này tương
tự như cách tạo khóa trong chữ ký số đã trình bày ở phần trước. Cặp khóa của Alice

22
Nhóm16 : An ninh mạng thông tin

được ký hiệu là (d A , Q A {¿(d { ¿{ A }},Q{ ¿ { A }})}) và của Bob là (d B,QB ).


Q A và Q B sẽ được Alice và Bob công khai lên kênh truyền. Hai bên sẽ nhận được

khóa công khai của nhau.

Alice sẽ tính điểm K 1=d A .Q B=(x K 1 , y K 1 ), Bob sẽ tính điểm K 2=d B .Q A =( x K 2 , y K 2 )


. Điểm K 1 và K 2 sẽ trùng nhau, giá trị x của tọa độ sẽ được lấy làm bí mật chung giữa
hai bên. Thông thường, các giao thức được tiêu chuẩn hóa dựa trên ECDH đều dựa
trên x để tính toán ra khóa bí mật để trao đổi thông tin.

Hai điểm K 1 và K 2 trùng nhau bởi:


d A . QB =d A . d B . G=d B . d A . G=d B . Q A

Chỉ có khóa công khai của Alice được tiết lộ. Còn khóa riêng chỉ mình Alice biết,
không bên nào có thể xác định được khóa riêng của Alice trừ khi họ giải được bài
toán logarit rời rạc của đường cong eliptic.

Với Bob, việc bảo mật cũng được thực hiện tương tự. Do đó, không ai có thể tính
toán được bí mật chung của hai bên, trừ khi bên thứ 3 có thể giải được bài toàn logarit
rời rạc của đường cong elliptic.
4.2.3 Ứng dụng vào các thiết bị có tài nguyên hạn chế:
Với những ưu điểm của thuật toán ECDSA như với độ dài khóa thấp (tức là bộ
nhớ được dùng để lưu các thông tin là ít hơn) nhưng vẫn giữ được độ an toàn cao (ví
dụ với độ dài khóa là 160 bit thì tương đương với khóa có độ dài 1024 bit trong thuật
toán RSA), và việc tính toán với tốc độ tính toán cao khi thuật toán thực hiện tính
toán các phép tính theo đường cong E với tập các giá trị E(Fq) trên trường hữu hạn Fq.
Chính vì vậy, thuật toán ECDSA được cho là thích hợp cho việc thực hiện ký và xác
thực trên các thiết bị có tài nguyên hạn chế trong các công nghệ như NFC (Near Field
Communication), RFID (Radio Frequency Identification) hay IoT (Internet of
Things), nơi mà việc truyền thông không chỉ bó buộc giữa các thực thể trong mạng
trở nên xác thực và an toàn hơn.

Hệ mật mã hóa khóa công khai ECC có thể được dùng như một lược đồ khóa
công khai hiệu quả cho các thiết bị xử lý có tài nguyên hạn chế vì nó yêu cầu ít tài
nguyên hơn so với thuật toán nổi tiếng như RSA. Với ECDSA trên một thiết bị thụ
động (như thẻ RFID) cần phải xác thực có thể dễ dàng thực hiện bằng thuật toán này.
23
Nhóm16 : An ninh mạng thông tin

Trong thực tế, thì các thẻ thụ động này có chứa một mã xác thực trong bộ nhớ riêng
của nó với một tài nguyên hạn chế và nó phải thực hiện việc ký để có thể xác thực
được với trung tâm xác thực. Đầu tiên, bộ đọc nhận chứng chỉ từ thẻ và xác minh giá
trị của khóa công khai. Sau đó, nó sẽ gửi một chuỗi ngẫu nhiên đến thẻ. Thẻ sẽ sử
dụng khóa riêng của mình cùng với thuật toán ECDSA để ký lên bản tin này và sau
đó gửi lại bộ đọc để có thể xác thực quyền đăng nhập của thẻ.

Các bước để có thể xây dựng và thực hiện thuật toán ECDSA trên các thiết bị có
tài nguyên hạn chế có thể được trình bày như sau:

4.2.3.1 Lựa chọn các tham số cho hệ thống:


ECDSA có thể được thực hiện bằng việc sử dụng các tham số đường cong elliptic
khác nhau. Nhưng trong thuật toán chữ ký ECDSA lại có hai sự lựa chọn trường hữu
hạn cho việc tính toán các phép tính đó là trường hữu hạn nguyên tố Fp (p là số
nguyên tố > 2) và trường nhị phân mở rộng F2m (m là số nguyên).

Để có thể áp dụng được trong các thiết bị có tài nguyên hạn chế thì phép tính số
học cũng là một yếu tố ảnh hưởng đến năng lực yêu cầu của thiết bị. Chính vì vậy, để
có thể áp dụng trên các thiết bị này thì các phép toán nên được thực hiện trên trường
nguyên tố Fp (q = p); vì trong trường này ta chỉ cần lưu các tham số của ECDSA trong
khi nếu như sử dụng trường nhị phân mở rộng thì ta còn phải tính toán thêm các phép
toán trong đa thức mở rộng của trường. Như thế, số các thành phần phần cứng số học
cần thiết có thể được tối ưu.

Do yêu cầu là thuật toán ECDSA phải hoạt động được trên thiết bị có tài nguyên
hạn chế nhưng lại phải có độ an toàn cao trong việc xác thực và bảo mật. Vì vậy, để
có thể đạt được những yêu cầu này, các tham số đường cong với một kích thước
nguyên tố nhỏ được chọn là tiêu chuẩn NIST-P192.

4.2.3.2 Thực hiện thuật toán


Thuật toán xác thực và ký sử dụng ECDSA đã được mô tả trong các mục trên. Ta
thấy, việc khó khăn nhất trong việc thực hiện thuật toán đó chính là việc thực hiện các
phép tính trên đường cong elliptic. Chính vì vậy, cần có một phương pháp được áp
dụng để làm tăng tốc độ tính toán của thuật toán.

24
Nhóm16 : An ninh mạng thông tin

Gọi E là một đường cong elliptic trên Fp. Một điểm P có thể được nhân vô hướng
như sau:

k
kP= Σ P
i=1

Làm sao có thể thực hiện tính kP một cách hiệu quả là một vấn đề đã được
nghiên cứu rất nhiều để có thể thực hiện trong ECC. Như ta biết, trên đường cong
elliptic có hai phép toán được dùng đó là phép cộng và phép nhân đã được trình bày ở
các chương trước.

Để có thể thực hiện đơn giản hóa phép toán trên ta thực hiện như sau:
1. Tách k ra thành các số nhị phân k = (kt – 1,…,k1,k0), ki {0,1}

2. Đặt Q = 0.

3. Cho i chạy từ t – 1 đến 0:

 Q = 2Q.

 Nếu ki = 1 thì Q = Q + P. Kết quả ta thu được Q=kP

Thuật toán này sẽ giúp tính toán trên các thiết bị nhỏ nhanh hơn rất nhiều.

25
Nhóm16 : An ninh mạng thông tin

KẾT LUẬN
Sau sự ra đời của Diffie-Hellman là nền tảng tuyệt vời cho khả năng mã hóa công
khai ,có thể kể đến sự tiêu biểu của thuật toán RSA.Nhờ đó con người đã sử dụng nó
như 1 cách ký hiệu cho bản thân ,cái được gọi là chữ ký số .Đây là điều tiên quyết và
cần thiết trong việc thực hiện ký và xác thực của thuật toán chữ ký số.

Hệ mật đường cong elliptic được phát hiện như một biện pháp sinh khóa mang
tính chất đột biến sau RSA

Thuật toán chữ ký số trên đường cong elliptic được cho là giải pháp hiệu quả và
an toàn, với kích thước khóa nhỏ hơn nhưng thuật toán có thể cho mức an toàn cao
như thuật toán khác có kích thước khóa lớn hơn.

Với việc sử dụng ít tài nguyên nhưng vẫn đem lại độ an toàn cao, ECDSA được
cho là một thuật toán thích hợp để áp dụng trên các thiết bị có tài nguyên hạn chế Tiểu
luận đã đưa ra một lược đồ cho việc áp dụng thuật toán ECDSA trên các thiết bị đó.
Theo đó,tiểu luận khuyến nghị tập trung vào các tham số trường hữu hạn (nên sử
dụng trường hữu hạn Fp trong đó p là một số nguyên tố lớn hơn 2), và phương pháp
tính nhằm tăng tốc độ của phép tính kP trên các thiết bị đó bằng việc thực hiện phân
tách tham số k thành chuỗi số nhị phân và áp dụng các công thức cộng và nhân đôi các
điểm trên đường cong elliptic.

TÀI LIỆU THAM KHẢO


[1] 1. Đỗ Xuân Bình, “Chữ ký số, chứng chỉ số và cơ sở hạ tầng khóa công khai
– Các vấn đề kỹ thuật và ứng dụng”, Nhà xuất vản bưu điện, 12 – 2007.

26
Nhóm16 : An ninh mạng thông tin

[2] Man Young Rhee, “Internet Security Cryptographic Principles, Algorithms


and Protocols”, John Wiley and Sons, 2003.
[3] Cameron F. Kerry, Patrick D. Gallagher, “Digital Signature Standard”,
Federal information processing standards publication, July 2013.
[4] Don Johnson, Alfred Menezes, Scott Vanstone, “The Elliptic Curve Digital
Signature Algorithm”, International Journal of Information Security, Vol. 1,
issue 1, pp 36-63.
[5] COMPARISON AND EVALUATION OF DIGITAL SIGNATURE
SCHEMES EMPLOYED IN NDN NETWORK của Al Imem Ali published
tại International Journal of Embedded systems and Applications(IJESA)
Vol.5, No.2, June 2015
[6] https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman
[7] An Introduction to Bitcoin, Elliptic Curves and the Mathematics of ECDSA

27

You might also like