Tải bản đầy đủ (.pdf) (70 trang)

Nghiên cứu phát triển mã hóa trên đường cong elliptic dựa trên chuỗi cơ số kép tối ưu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (804.52 KB, 70 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
—————————

Đặng Thị Liên

NGHIÊN CỨU PHÁT TRIỂN MÃ HÓA TRÊN ĐƯỜNG CONG ELLIPTIC
DỰA TRÊN CHUỖI CƠ SỐ KÉP TỐI ƯU

LUẬN VĂN THẠC SĨ KHOA HỌC

Hà Nội - 2016


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
—————————

Đặng Thị Liên

NGHIÊN CỨU PHÁT TRIỂN MÃ HÓA TRÊN ĐƯỜNG CONG ELLIPTIC
DỰA TRÊN CHUỖI CƠ SỐ KÉP TỐI ƯU

Chuyên ngành: Cơ sở toán cho tin học
Mã số
: 60460110

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. Nguyễn Hải Vinh


Hà Nội - 2016


LỜI CẢM ƠN
Được sự phân công của khoa Toán - Cơ - Tin học, Trường Đại học Khoa học Tự
nhiên, Đại Học Quốc Gia Hà Nội, được sự đồng ý của Thầy giáo hướng dẫn TS. Nguyễn
Hải Vinh, tôi đã thực hiện đề tài "Nghiên cứu phát triển mã hóa trên đường cong Elliptic
dựa trên chuỗi cơ số kép tối ưu".
Để hoàn thành luận văn này, tôi xin bày tỏ lòng biết ơn sâu sắc tới TS. Nguyễn
Hải Vinh - người Thầy đã trực tiếp hướng dẫn và chỉ bảo giúp tôi hoàn thành luận văn
thạc sĩ.
Tôi cũng xin chân thành cảm ơn các Thầy, Cô giáo đã tận tình hướng dẫn, giảng
dạy trong suốt quá trình tôi học tập và rèn luyện tại trường.
Qua đây, tôi xin gửi lời cảm ơn tới gia đình, bạn bè, đồng nghiệp - những người
đã luôn bên cạnh cổ vũ, động viên, giúp đỡ tôi trong suốt quá trình học tập và thực hiện
luận văn này.
Mặc dù tôi đã cố gắng thực hiện luận văn song do kiến thức của tôi còn nhiều hạn
chế nên luận văn không tránh khỏi những thiết sót nhất định. Do đó, tôi rất mong được
sự góp ý của quý Thầy, Cô giáo và các bạn để luận văn của tôi được hoàn thiện hơn.
Tôi xin chân thành cảm ơn!.
Hưng Yên, ngày..... tháng ..... năm 2016
Học viên

Đặng Thị Liên


BẢNG KÍ HIỆU, CHỮ VIẾT TẮT
STT
1
2

3
4
5
6
7
8
9

Kí hiệu
DBC
DBNS
EC
ECC
NAF
I
S
M
RSA

10

Ds

Dạng đầy đủ
Double Base Chains
Double Base Number System
Elliptic Curve
Elliptic Curve Cryptography
Non Adjacent Form
Field Inversions

Field Squarings
Field Multiplications
Cryptosystem proposed by
Rivest, Shamir, Adleman
Digit set

2

Ý nghĩa
Chuỗi cơ số kép
Hệ biểu diễn cơ số kép
Đường cong Elliptic
Hệ mật mã đường cong Elliptic
Dạng hình thức không liền kề
Phép nghịch đảo trường
Phép bình phương trường
Phép nhân trường
Hệ mật mã khóa công khai RSA
Tập các số


Mục lục
Lời mở đầu

5

Chương 1 Cơ sở lý thuyết

7


1.1

Sơ lược về mật mã học . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2

Đường cong Elliptic trên trường nguyên tố hữu hạn . . . . . . . . . . . .

10

1.2.1

Định nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.2.2

Tính chất của đường cong Elliptic . . . . . . . . . . . . . . . . . .

12

1.2.3

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

13


1.2.4

Chi phí của một số phép toán trên điểm . . . . . . . . . . . . . .

16

Hệ mật mã dựa trên đường cong Elliptic . . . . . . . . . . . . . . . . . . .

20

1.3.1

Quá trình mã hóa . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.3.2

Quá trình giải mã . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.3

Chương 2 Một số phương pháp và chi phí tính phép nhân vô hướng trên đường
cong elliptic
24
2.1

Đặt bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


24

2.2

Một số phương pháp và chi phí tính phép nhân vô hướng trên đường cong
elliptic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.2.1

Phương pháp Double-and-Add . . . . . . . . . . . . . . . . . . .

24

2.2.2

Phương pháp sử dụng chuỗi hình thức không liền kề (NAF) . . .

27

2.2.3

Phương pháp sử dụng chuỗi cơ số kép tối ưu . . . . . . . . . . . .

30

Chương 3 Áp dụng tính toán thực tế
3.1


50

Tính toán trên cơ sở lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . .

50

3.1.1

Chi phí của phương pháp Double-and-Add . . . . . . . . . . . . .

50

3.1.2

Chi phí của phương pháp NAF . . . . . . . . . . . . . . . . . . .

51

3.1.3

Chi phí của phương pháp sử dụng DBC trên miền Ds = {0, 1} . .

53

3


3.1.4


Chi phí của phương pháp sử dụng DBC trên miền Ds = {0, 1, −1} 54

3.2

Kết quả dựa trên cơ sở chạy chương trình . . . . . . . . . . . . . . . . . .

58

3.3

Ứng dụng mã hóa và giải mã đường cong Elliptic . . . . . . . . . . . . . .

59

3.3.1

Hệ mật mã khóa công khai ElGamal . . . . . . . . . . . . . . . .

60

3.3.2

Cài đặt chương trình sử dụng phương pháp ElGamal . . . . . . .

60

Kết luận

64


Phụ lục

65

Tài liệu tham khảo

68

4


LỜI MỞ ĐẦU
Ngày nay, sự phát triển của công nghệ thông tin, truyền thông nói chung và đặc
biệt là sự bùng nổ của internet nói riêng đã giúp cho việc trao đổi thông tin trở nên nhanh
chóng, dễ dàng. Song song với những lợi ích của nó vẫn tồn tại một số vấn đề trong quá
trình lưu trữ và truyền tải thông tin, đó là thông tin có thể bị đánh cắp, bị sai lệch hoặc có
thể bị giả mạo. Điều này có thể ảnh hưởng đến các tổ chức, các công ty hay cả một quốc
gia. Để giải quyết vấn đề trên, an toàn thông tin được đặt ra cấp thiết. Kỹ thuật mật mã là
một trong những giải pháp của an toàn truyền thông. Các nhà khoa học đã phát minh ra
những hệ mật mã nhằm che dấu thông tin cũng như là làm rõ chúng để tránh kẻ cố tình
phá hoạt các hệ mật: RSA, ElGamal . . . mặc dù cũng rất an toàn, tuy nhiên độ dài khóa
lớn nên trong một số lĩnh vực không thể ứng dụng được. Chính vì vậy, người ta phát minh
ra một hệ mật đó là hệ mật mã dựa trên đường cong elliptic. Hệ mật này được đánh giá
có độ bảo mật an toàn cao và hiệu quả hơn một số hệ mật công khai khác do khả năng
bảo mật của ECC cao với kích thước khóa nhỏ nên làm giảm thời gian tạo khóa, thu gọn
được kích thước của chứng nhận giao dịch trên mạng và giảm kích thước tham số của hệ
thống mã hóa.
Mục đích của luận văn là nghiên cứu phương pháp giảm thời gian tạo khóa bằng
cách tập trung vào hệ thắt nút cổ chai của ECC - "phép nhân với đại lượng vô hướng" (gọi
tắt là nhân vô hướng) Q = rS , với S, Q là 2 điểm trên EC, r là một số nguyên dương.

Thời gian tính toán của hệ này phụ thuộc mạnh mẽ vào biểu diễn của vô hướng r, các
biểu diễn thường gặp như là chuỗi nhị phân, chuỗi hình thức không liền kề, chuỗi cơ số
kép, ... Yêu cầu đặt ra đối với hệ mật mã dựa trên đường cong elliptic chính là giảm bớt
khó khăn trong phép tính Q = rS bởi với mỗi vô hướng r có nhiều cách để biểu diễn r
nên ta có được các phương pháp tính nhân vô hướng đặc trưng cho từng biểu diễn đó.
Để làm rõ vai trò của biểu diễn vô hướng r trên hệ ECC cũng như sự phát triển
các phương pháp thực hiện phép nhân vô hướng nhằm giảm chi phí, thời gian tính toán
của quá trình mã hóa, tôi quyết định chọn đề tài: "Nghiên cứu phát triển mã hóa trên
đường cong Elliptic dựa trên chuỗi cơ số kép tối ưu".
Đối tượng nghiên cứu của luận văn bao gồm cơ sở toán học hệ mật dựa trên đường
cong elliptic; các phương pháp và chi phí tính nhân vô hướng, tập trung vào phương pháp
sử dụng chuỗi cơ số kép tối ưu trên các miền Ds khác nhau.

5


Phạm vi nghiên cứu của luận văn: Dựa trên sách và các bài báo khoa học liên quan
đến hệ mật đường cong Elliptic, mà trọng tâm là bài báo "Fast Elliptic curve cryptography using optimal double - Base Chains" của nhóm tác giả Vorapong Suppakitpalsarn,
Masato Edahiro, Hiroshi Imai. Bài báo này đề xuất phương án sử dụng chuỗi cơ số kép
tối ưu để tính nhân vô hướng trên miền các miền Ds = {0, 1} và Ds = {0, 1, −1}
Kết quả của luận văn là nghiên cứu quá trình hoàn thiện mã hóa trên đường cong
Elliptic qua các phương pháp nhân vô hướng khác nhau. So sánh, đối chiếu các phương
pháp và từ đó rút ra được phương pháp nào là hiệu quả và tối ưu hơn. Ứng với mỗi phương
pháp này xây dựng chương trình minh họa cho nó.
Dựa vào mục đích, phạm vi, đối tượng nghiên cứu, luận văn được trình bày bao
gồm 3 chương chính cùng với phần mở đầu, kết luận và phụ lục:
• Chương 1: Cơ sở lý thuyết
• Chương 2: Một số phương pháp và chi phí tính phép nhân vô hướng trên đường cong

Elliptic

• Chương 3: Áp dụng tính toán thực tế.

6


Chương 1
1.1

Cơ sở lý thuyết

Sơ lược về mật mã học

Mật mã đã được con người sử dụng từ lâu đời. Các hình thức mật mã sơ khai đã
được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập cổ đại. Trải
qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi ở khắp nơi trên thế giới từ
Đông sang Tây để giữ bí mật cho việc giao lưu thông tin trong nhiều lĩnh vực hoạt động
giữa con người và các quốc gia, đặc biệt trong các lĩnh vực quân sự, chính trị, ngoại giao.
Mật mã trước hết là một loại hoạt động thực tiễn, nội dung chính của nó là để giữ bí mật
thông tin. Ví dụ muốn gửi một văn bản từ một người gửi A đến một người nhận B, A phải
tạo cho văn bản đó một bản mã mật tương ứng và thay vì gửi văn bản rõ thì A chỉ gửi cho
B bản mã mật, B nhận được bản mã mật và khôi phục lại văn bản rõ để hiểu được thông
tin mà A muốn gửi cho mình. Do văn bản gửi đi thường được chuyển qua các con đường
công khai nên người ngoài có thể “lấy trộm” được, nhưng vì đó là bản mật mã nên không
đọc hiểu được; Còn A có thể tạo ra bản mã mật và B có thể giải bản mã mật thành bản rõ
để hiểu được là do hai người đã có một thoả thuận về một chìa khoá chung, chỉ với khoá
chung này thì A mới tạo được bản mã mật từ bản rõ và B mới khôi phục được bản rõ từ
bản mã mật. Khoá chung đó được gọi là khoá mật mã. Để thực hiện được một phép mật
mã, ta còn cần có một thuật toán biến bản rõ cùng với khoá mật mã thành bản mã mật
và một thuật toán ngược lại biến bản mật cùng với khoá mật mã thành bản rõ. Các thuật
toán đó được gọi tương ứng là thuật toán lập mã và thuật toán giải mã. Các thuật toán này

thường không nhất thiết phải giữ bí mật, mà cái luôn cần được giữ bí mật là khoá mật
mã. Trong thực tiễn, có những hoạt động ngược lại với hoạt động bảo mật là khám phá bí
mật từ các bản mã “lấy trộm” được, hoạt động này thường được gọi là mã thám hay phá
khoá [2]. Hiện nay, người ta chia hệ mật mã thành hai loại chính:
• Mật mã khóa đối xứng, hay còn gọi là mật mã khóa bí mật [3]
• Mật mã khóa bất đối xứng, hay còn gọi là mật mã khóa công khai [3]

Nhắc đến hệ mật mã khóa bí mật, ta thấy ưu điểm nổi trội của nó là việc dùng
chung một khóa để lập mã và giải mã được thực hiện nhanh chóng và đơn giản. Mặc dù
mã hóa đối xứng đã phát triển từ cổ điển đến hiện đại nhưng vẫn tồn tại hai điểm yếu
chính sau:
7


• Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần có thêm một kênh an toàn

để trao đổi khóa sao cho khóa được giữ bí mật chỉ có người gửi và người nhận được
biết. Điều này trở nên cực kì khó khăn khi khối lượng thông tin truyền tải trên khắp
thế giới rất lớn. Việc thiết lập một kênh an toàn như vậy sẽ tốn kém về mặt chi phí
và chậm trễ về mặt thời gian.
• Tính bảo mật của khóa: Vì khóa được dùng chung cho cả người gửi và người nhận

nên khi khóa bị lộ không có cơ sở quy trách nhiệm cho người nào.
Để giải quyết vấn đề phân phối và thoả thuận khoá của mật mã khoá đối xứng,
năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khoá công khai và một
phương pháp trao đổi công khai để tạo ra một khoá bí mật chung mà tính an toàn được
bảo đảm bởi độ khó của một bài toán toán học, cụ thể là bài toán tính logarit rời rạc [1].
Hệ mật mã khoá công khai hay còn được gọi là hệ mật mã phi đối xứng sử dụng một cặp
khoá, khoá mã hoá còn gọi là khoá công khai (public key) và khoá giải mã được gọi là
khoá bí mật hay khóa riêng (private key). Trong hệ mật này, khoá mã hoá khác với khoá

giải mã. Về mặt toán học thì từ khoá công khai rất khó tính được khoá riêng. Biết được
khoá này không dễ dàng tìm được khoá kia. Khoá giải mã được giữ bí mật trong khi khoá
mã hoá được công bố công khai. Một người bất kỳ có thể sử dụng khoá công khai để mã
hoá tin tức, nhưng chỉ có người nào có đúng khoá giải mã mới có khả năng xem được bản
rõ. Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B
sẽ giải mã thông điệp với khoá riêng tương ứng của mình.
Có nhiều hệ thống khoá công khai được triển khai rộng rãi như hệ RSA, hệ ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman và nổi lên trong những năm gần đây
là hệ mật mã dựa trên đường cong Elliptic. Trong số các hệ mật mã trên, hệ mã hóa công
khai RSA là hệ được cộng đồng chuẩn quốc tế và công nghiệp chấp nhận rộng rãi trong
việc thực thi mật mã khoá công khai.
Hệ mật mã RSA, do Rivest, Shamir và Adleman [3] tìm ra, đã được công bố lần
đầu tiên vào tháng 8 năm 1977 trên tạp chí Scientific American. Hệ mật mã RSA được
sử dụng rộng rãi trong thực tiễn đặc biệt cho mục đích bảo mật và xác thực dữ liệu số.
Tính bảo mật và an toàn của chúng được bảo đảm bằng độ phức tạp của một bài toán số
học nổi tiếng là bài toán phân tích một số thành các thừa số nguyên tố [1].
Để thực hiện mã hóa và giải mã bằng phương pháp RSA [2], RSA dùng phép lũy
thừa modulo của lý thuyết số và thực hiện theo các bước sau:
8


1. Chọn hai số nguyên tố lớn p và q và tính N = pq . Cần chọn p và q sao cho:
M < 2i−1 < N < 2i

Với i = 1024 thì N là một số nguyên dài khoảng 309 chữ số.
2. Tính n = (p − 1)(q − 1)
3. Tìm một số e sao cho e nguyên tố cùng nhau với n
4. Tìm một số d sao cho e.d ≡ 1 (mod n) (d là nghịch đảo của e trong phép modulo n )
5. Hủy bỏ n, p và q . Chọn khóa công khai KU là cặp (e, N ), khóa riêng KR là cặp (d, N )
6. Việc mã hóa thực hiện theo công thức:
C = E(M, KU ) = M e


mod N

7. Việc giải mã thực hiện theo công thức:
M = D(C, KR ) = C d

mod N

Đối với phương pháp RSA, để đảm bảo an toàn, chúng ta phải chọn số N lớn (1024
bít) nên việc sinh khóa, lập mã và giải mã phức tạp, dẫn đến tốc độ thực hiện chậm. Để
khắc phục nhược điểm này, năm 1985, hai nhà khoa học Neal Koblitz và Victor S. Miller
đã độc lập nghiên cứu và đưa ra đề xuất ứng dụng lý thuyết toán học đường cong elliptic
(elliptic curve) trên trường hữu hạn [3] để xây dựng mã hóa dựa trên đường cong Elliptic.
Mã hóa đường cong elliptic giải quyết vấn đề của mã hóa RSA khi dùng các tham số có
kích thước ngắn hơn (168 bít) tuy nhiên vẫn đảm bảo độ an toàn như RSA 1024 bít. Ưu
điểm nổi bật của ECC là hệ mật mã này sử dụng khoá có độ dài nhỏ hơn so với RSA. Từ
đó làm tăng tốc độ xử lý một cách đáng kể, do số phép toán dùng để mã hoá và giải mã ít
hơn và yêu cầu các thiết bị có khả năng tính toán thấp hơn, nên giúp tăng tốc độ và làm
giảm năng lượng cần sử dụng trong quá trình mã hoá và giải mã. Sau đây, chúng ta sẽ
tìm hiểu chi tiết về lý thuyết toán học đường cong elliptic trên trường nguyên tố hữu hạn
và hệ mật mã dựa trên đường cong elliptic.

9


1.2

Đường cong Elliptic trên trường nguyên tố hữu hạn

Tính bảo mật của hệ thống mã hóa sử dụng đường cong elliptic dựa trên điểm

mấu chốt là độ phức tạp của bài toán logarit rời rạc trong hệ thống đại số [1]. Không
giống như bài toán logarit rời rạc trên trường hữu hạn hoặc bài toán phân tích thừa số của
số nguyên, bài toán logarit rời rạc trên đường cong elliptic chưa có thuật toán nào có thời
gian nhỏ hơn cấp lũy thừa. Thuật toán tốt nhất được biết đến cho tới hôm nay tốn thời
gian thực hiện cấp lũy thừa.
1.2.1

Định nghĩa

Gọi K là một trường hữu hạn hoặc vô hạn. Một đường cong elliptic được định nghĩa trên
trường K bằng công thức Weierstrass (theo tài liệu [4, 7]):
y 2 z + a1 xyz + a3 yz 2 = x3 + a2 x2 z + a4 xz 2 + a6 z 3

trong đó a1 , a2 , a3 , a4 , a6 ∈ K .
Đường cong elliptic trên trường K được kí hiệu là E(K). Đối với từng trường khác
nhau, công thức Weierstrass có thể được biến đổi và đơn giản hóa thành các dạng khác
nhau.
Trong luận văn này chỉ xét đường cong elliptic trên trường nguyên tố hữu hạn nên
ta có dạng thu gọn của đường cong với định nghĩa như sau:
Đường cong Elliptic E trên trường nguyên tố hữu hạn Zp kí hiệu là (E(Zp )), là
đường cong có các hệ số thuộc trường Zp , đường cong này có dạng:
(E(Zp )) : y 2 mod p = x3 + ax + b mod p

(1.2.1)

với a, b ∈ Zp , ∆ = −16 4a3 + 27b2 = 0 , char(Zp ) > 3 , là tập tất cả các cặp điểm (x, y)
với x, y ∈ Zp thỏa mãn phương trình trên cùng với một điểm O - được gọi là điểm tại vô
cực.
Ví dụ trong trường Z23 , chọn a = 1, b = 1, x = 9, y = 7 ta có:
72 mod 23 = (93 + 9 + 1) mod 23

49 mod 23 = 739 mod 23 = 3

10


Khác với đường cong Elliptic trong trường số thực [1], chúng ta không thể biểu
diễn đường cong Elliptic E(Zp ) bằng đồ thị hàm số liên tục. Bảng bên dưới liệt kê các
điểm (x, y) của đường cong y 2 = x3 + x + 1 trong trường Z23 với a = 1, b = 1 như sau:
Bảng 1: Danh sách các điểm của đường cong y 2 mod 23 = x3 + x + 1 mod 23
(0, 1)

(6, 4)

(12, 19)

(0, 22)

(6, 19)

(13, 7)

(1, 7)

(7, 11)

(13, 16)

(1, 16)

(7, 12)


(17, 3)

(3, 10)

(9, 7)

(17, 20)

(3, 13)

(9, 16)

(18, 3)

(4, 0)

(11, 3)

(18, 20)

(5, 4)

(11, 20)

(19, 5)

(5, 19)

(12, 4)


(19, 18)

Cũng tương tự khái niệm đối xứng qua trục hoành của đường cong Elliptic trên
trường số thực E (R), đường cong Elliptic trên trường nguyên tố hữu hạn E(Zp ) cũng đối
xứng theo nghĩa đối xứng modulo. Thật vậy, giả sử điểm (x, y) thuộc E(Zp ) thỏa mãn
(1.2.1) thì điểm (x, p − y) cũng thuộc (1.2.1) vì:
(p − y)2 mod p = p2 − 2py + y 2 mod p ≡ y 2 mod p

Ví dụ (1, 7) đối xứng với (1, 16) vì 7 + 16 = 0 mod 23 hoặc (3, 10) đối xứng với
(3, 13) vì 10 + 13 = 0 mod 23. Hình vẽ bên dưới minh họa tính đối xứng của các điểm
thuộc đường cong Elliptic trên trường nguyên tố hữu hạn:

11


Hình 1: Minh họa tính đối xứng trong Z23
Các điểm đối xứng với nhau qua đường y = 11.5 . Riêng điểm (4, 0) xem như là
đối xứng với chính nó.
1.2.2

Tính chất của đường cong Elliptic

• Nếu hai điểm P (x1 , y1 ) và Q(x2 , y2 ) (với x1 = x2 ) nằm trên cùng một đường cong

Elliptic (E), thì đường thẳng đi qua hai điểm P và Q sẽ cắt tại một điểm duy nhất
R(x3 , y3 ) nằm trên đường cong (E) đó, và R có thể xác định thông qua P và Q.
• Tiếp tuyến của đường cong tại một điểm bất kỳ P (x, y) trên đường cong (E) cũng

cắt (E) tại một điểm duy nhất trên (E), điểm này cũng có thể xác định thông qua P .


12


Hình 2: Minh họa tính chất của đường cong Elliptic
1.2.3

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

Dựa vào các tính chất của đường cong Elliptic, chúng ta xác định hai phép toán
trên đường cong Elliptic là: phép cộng điểm và phép nhân điểm. Sau đây là công thức
tính của từng phép toán.

13


Phép cộng điểm
• Định nghĩa: Với 2 điểm P (xP , yP ), Q(xQ , yQ ) bất kỳ, phép cộng R = P + Q được

xác định bằng công thức:
xR = α2 − xP − xQ mod p
yR = α(xP − xR ) − yP mod p

trong đó:
α=

y −y
Q
P


mod p

xQ − xP
2

 3xP + a mod p
2yP

nếu P = Q
nếu P = Q

Hình 3: Minh họa phép cộng điểm
Chú ý rằng các điểm (xR ; yR ) , (xR ; −yR )cùng nằm trên đường cong Elliptic và xét
về mặt hình học thì các điểm (xP ; yP ), (xQ ; yQ ) và (xR ; yR ) cùng nằm trên một đường
thẳng.
Ngoài ra, ta định nghĩa thêm: P + O = O + P = P
• Tính chất: Dễ thấy rằng: (E(Zp ), +) tạo thành nhóm Abelian:

– Tính đóng: Nếu P, Q ∈ E(Zp ) thì P + Q ∈ E(Zp )
14


– Tính kết hợp: Nếu ∀P, Q, R ∈ E(Zp ) thì P + (Q + R) = (P + Q) + R
– Tồn tại phần tử trung hòa O: ∀P ∈ E(Zp ) thì P + O = O + P = P (theo định
nghĩa)
– Tồn tại phần tử nghịch đảo: với mỗi P (x, y) ∈ E(Zp ) thì luôn tồn tại phần tử
−P (x, p − y) ∈ E(Zp ) , là điểm đối xứng của P để P + (−P ) = O
– Tính chất giao hoán: Nếu P, Q ∈ E(Zp ) thì P + Q = Q + P
Phép nhân điểm
• Phép nhân một số nguyên r với một điểm P ∈ (E) là điểm R ∈ (E) được xác định


bằng r − 1 lần phép cộng điểm:
rP = P + P + .... + P
r

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

Hình 4: Minh họa phép nhân đôi điểm R = 2P
Từ các tính chất và phép toán của đường cong Elliptic trên trường nguyên tố hữu
hạn Zp ta thấy việc mã hóa đường cong Elliptic chính là việc thực hiện phép nhân vô
15


hướng r với một điểm P ∈ E(Zp ): Q = rP ∈ E(Zp ) với r là số nguyên dương lớn, Q là
khóa công khai dùng trong khi tạo đường cong Elipptic. Có nhiều phương pháp để tính
nhân vô hướng này, tùy vào từng biểu diễn của r thì mỗi phương pháp lại dùng các phép
toán trên điểm khác nhau. Sau đây, ta tìm hiểu các thuật toán và chi phí của các phép
toán trên từng thuật toán để tính phép nhân với đại lượng vô hướng.
1.2.4

Chi phí của một số phép toán trên điểm

Cho P (x1 , y1 ), Q(x2 , y2 ) ∈ E(Zp ). Các phép toán số học cơ bản trên trường nguyên
tố hữu hạn Zp được ký hiệu như sau:
• Phép toán nghịch đảo, ký hiệu là: I
• Phép toán bình phương, ký hiệu là: S
• Phép toán nhân, ký hiệu là: M

Để tính chi phí của các phép toán trên điểm P và Q chúng ta dựa vào việc đếm số

phép toán số học (I, S, M ) trên trường nguyên tố hữu hạn của từng thuật toán.
• Phép toán trên điểm P + Q, 2P
Nếu P = Q thì chúng ta có phép toán cộng điểm P + Q. Nếu P = Q thì chúng ta có

phép toán nhân đôi điểm 2P .
– Phép cộng điểm: P + Q = R(x3 , y3 ), trong đó:
x3 = α2 − x1 − x2 (mod p)
y3 = (α (x1 − x3 ) − y1 ) (mod p)
y − y1
với α = 2
(mod p) = (y2 − y1 ) (x2 − x1 )−1 (mod p )
x2 − x1

– Phép nhân đôi điểm: 2P = R (x3 , y3 ), trong đó:
x3 = α2 − 2x1 (mod p)
y3 = (α (x1 − x3 ) − y1 ) (mod p)

với α =

3x21 + a
(mod p) =
2y1

3x21 + a (2y1 )−1 (mod p)

Từ tính chất và phân tích trên dẫn đến thuật toán sau [6]:
16


Thuật toán 1 : Cộng, nhân 2 điểm

Input: P (x1 , y1 ), Q(x2 , y2 ) ∈ E(Zp )
Output: R(x3 , y3 ) = P + Q
1: if P = O return Q
2: if Q = O return P
3: if P = Q :
4:
∆1 ← (3x21 + a)(2y1 )−1 (mod p)
5:
x3 ← ∆21 − 2x1 (mod p)
6:
y3 ← (∆1 (x1 − x3 ) − y1 ) (mod p)
7: if P = −Q : return O
8: if P = Q :
9:
∆1 ← (y2 − y1 )(x2 − x1 )−1 (mod p)
10:
x3 ← ∆21 − x1 − x2 (mod p)
11:
y3 ← (∆1 (x1 − x3 ) − y1 ) (mod p)
12: return (x3 , y3 )
Tổng
2P :

1S + 1I + 1M
1S
1M

1I + 1M
1S
1M

1I + 2S + 2M
1I + 1S + 2M

P +Q:
• Phép toán trên điểm 2P + Q

– Ta có: P (x1 , y1 ), Q(x2 , y2 ) với x1 = x2 thì tính ∆1 =
với:

y2 − y1
, và P +Q = (x3 , y3 )
x2 − x 1

x3 = ∆21 − x1 − x2 , y3 = ∆1 (x1 − x3 ) − y1

Tính S = 2P + Q = P + (P + Q) = (x4 , y4 )
y3 − y1
(∆1 (x1 − x3 ) − y1 ) − y1
2y1
=
=
− ∆1
x3 − x1
x3 − x1
x1 − x3
x4 = ∆22 − x1 − x3 = ∆22 − x1 − ∆21 + x1 + x2 = ∆22 − ∆21 + x2 =

Ta có: ∆2 =

(∆2 − ∆1 )(∆2 + ∆1 ) + x2

y4 = (x1 − x4 )∆2 − y1

– Biến đổi,
từ công thức: x4 = (∆2 − ∆1 )(∆2 + ∆1 ) + x2
2y1

− ∆1
∆2 =


x1 − x3

ta thay: x3 = ∆21 − x1 − x2


y2 − y1


∆1 =

x2 − x1

17


dẫn đến đặt d = (x2 − x1 )2 (2x1 + x2 ) − (y2 − y1 )2
Dễ dàng có:
d = (x2 − x1 )2 (2x1 + x2 ) − ∆21 (x2 − x1 )2 = (x2 − x1 )2 (2x1 + x2 − ∆21 )
= (x2 − x1 )2 (2x1 + x2 − x3 − x1 − x2 ) = (x2 − x1 )2 (x1 − x3 )
Định nghĩa: D = d(x2 − x1 ), I = D−1 , suy ra:

1
= dD−1 = dI
x2 − x1
1
(x2 − x1 )2
(x2 − x1 )3
=
=
= (x2 − x1 )3 I
x1 − x3
d
D

Từ phân tích ở trên ta có được thuật toán sau [6]:
Thuật toán 2: Tính 2P + Q
Input: P (x1 , y1 ), Q(x2 , y2 ) ∈ E(Zp )
Output: S(x4 , y4 ) = 2P + Q
1: if (x1 = x2 ) then
2:
(y1 = y2 ) then return 3P else return P
3: A ← (x2 − x1 )2 (mod p), B ← (y2 − y1 )2 (mod
SS
p)
4: d ← (A (2x1 + x2 ) − B) (mod p)
M
5: if (d = 0) then return O
6: D ← (d (x2 − x1 )) (mod p) ,I ← D−1 (mod p)
MI
7: ∆1 ← (dI (y2 − y1 )) (mod p)
MM

8: ∆2 ← (2y1 A (x2 − x1 ) I − ∆1 ) (mod p)
MMM
9: x4 ← ((∆2 − ∆1 ) (∆2 + ∆1 ) + x2 ) (mod p)
M
10: y4 ← ((x1 − x4 ) ∆2 − y1 ) (mod p)
M
11: return (x4 , y4 )
Tổng
1I + 2S + 9M
• Phép toán trên điểm 3P

– Khi P = Q thì thuật toán trên không cho ta biết làm thế nào để tính 3P , dùng
cách biến đổi tương tự như của thuật toán trên ta có phân tích để tính 3P như
sau:

18


Với P (x1 , y1 ) thì theo thuật toán 1 tính được 2P (x3 , y3 ) có ∆1 =

3x21 + a

2y1

x3 = ∆21 − 2x1 , y3 = ∆1 (x1 − x3 ) − y1

Tính S = 3P = P + (2P ) = (x4 , y4 )
Ta có: ∆2 =

y3 − y1

(∆1 (x1 − x3 ) − y1 ) − y1
2y1
=
=
− ∆1
x3 − x1
x3 − x1
x1 − x3

x4 = ∆22 −x1 −x3 = ∆22 −x1 −∆21 +2x1 = ∆22 −∆21 +x1 = (∆2 −∆1 )(∆2 +∆1 )+x1
y4 = (x1 − x4 )∆2 − y1

– Biến đổi,
từ công thức: x4 = (∆2 − ∆1 )(∆2 + ∆1 ) + x2
2y1


− ∆1
∆2 =


x1 − x3

ta thấy: x3 = ∆21 − 2x1


3x2 + a


∆1 = 1

2y1
dẫn đến đặt d = (2y1 )2 (3x1 ) − (3x21 + a)2

Dễ dàng có:
d = (2y1 )2 (3x1 ) − ∆21 (2y1 )2 = (2y1 )2 3x1 − ∆21
= (2y1 )2 (3x1 − x3 − 2x1 ) = (2y1 )2 (x1 − x3 )

Định nghĩa: D = d(2y1 ), I = D−1 , suy ra:
1
= dD−1 = dI
2y1
(2y1 )2
(2y1 )3
1
=
=
= (2y1 )3 I
x1 − x3
d
D

Từ phân tích ở trên ta có được thuật toán sau [6]:
Thuật toán 3: Tính 3P
Input: P (x1 , y1 ) ∈ E(Zp )
Output: T (x4 , y4 ) = 3P
1: if (y1 = 0) then return P
2: A ← (2y1 )2 (mod p), B ← 3x21 + a (mod p), C ←
B 2 (mod p)
3: d ← (A(3x1 ) − C) (mod p)
4: if(d = 0) then return O

19

SSS
M


5: D ← (d(2y1 )) (mod p), I ← D−1 (mod p)
6: ∆1 ← (dIB) (mod p)
7: ∆2 ← A2 I − ∆1 (mod p)
8: x4 ← ((∆2 − ∆1 )(∆2 + ∆1 ) + x1 ) (mod p)
9: y4 ← ((x1 − x4 )∆2 − y1 ) (mod p)
10: return (x4 , y4 )
Tổng

MI
MM
SM
M
M
1I + 4S + 7M

Như vậy, P + Q, 2P , 2P + Q, 3P là một số các phép toán trên điểm cơ bản
của EC. Sau mỗi thuật toán nêu ở trên ta đếm được số phép toán số học của trường
nguyên tố hữu hạn theo (I, S, M ). Mặt khác, các phép toán trên điểm cơ bản nêu trên
được áp dụng để tính nhân vô hướng Q = rP . Muốn biết được đâu là phương pháp
tốt nhất thì ta phải biết được tổng số phép toán trên điểm để tính tổng chi phí tính
toán của mỗi phương pháp. Vì vậy, trong trường nguyên tố hữu hạn ta gọi chi phí
các phép toán trên điểm như sau:
– Phép nghịch đảo - I có chi phí [i]
– Phép bình phương - S có chi phí [s]

– Phép nhân - M có chi phí [m]
Dựa vào việc đếm các phép toán số học cơ bản của các thuật toán được trình
bày ở trên, ta có bảng tổng hợp chi phí của các phép toán trên điểm như sau:
STT Phép toán trên điểm Kí hiệu
1
P+Q
add
2
2Q
dou
3
2Q + P
DA
4
3P
T

Chi phí
Padd = 1[i] + 1[s] + 2[m]
Pdou = 1[i] + 2[s] + 2[m]
PDA = 1[i] + 2[s] + 9[m]
PT = 1[i] + 4[s] + 7[m]

Bảng 1: Chi phí của các phép toán trên điểm

1.3

Hệ mật mã dựa trên đường cong Elliptic
Đố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 = rP

(điểm Q là tổng của r điểm P , r < p )
20


Cho trước r và P , việc tính Q thực hiện rất dễ dàng. Tuy nhiên nếu cho trước P và
Q, việc tìm ra r 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ụ:
Xét nhóm E23 (9, 17) với phương trình:
y 2 mod 23 = (x2 + 9x + 17) mod 23

a, b, x, y ∈ Z23

Cho điểm P = (16, 5), Q = (4, 5), chúng ta chỉ có cách là vét cạn các giá trị của r
từ 2 đến p − 1 để tìm ra r:
P = (16, 5); 2P = (20, 20); 3P = (14, 14); 4P = (19, 20); 5P = (13, 10); 6P = (7, 3); 7P =
(8, 7); 8P = (12, 17); 9P = (4, 5)

Vì 9P = Q nên ta xác định được r = 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 r nhanh hơn vét cạn là phương pháp Pollar rho.
Như vậy, ECC thực hiện việc mã hóa và giải mã dựa trên tọa độ của các điểm nằm
trên EC và tính nhân vô hướng Q = rP với P, Q là các điểm trên đường cong E(Zp ), r
là số nguyên dương. Khi đó r được gọi là logarit cơ sở của P và Q. Bài toán tính logarit
rời rạc theo modulo nguyên tố của các điểm trên đường cong đòi hỏi thời gian mũ. Từ
đó, các hệ mã hóa công khai sử dụng đường cong Elliptic dựa trên độ phức tạp của thuật
toán tìm logarit, trong đó: r là khóa bí mật, Q là khóa công khai và P được dùng làm "cơ
sở".
Mô hình mã hóa dữ liệu sử dụng đường cong elliptic (Elliptic Curve Encryption

Scheme - ECES) bao gồm hai thao tác: mã hóa và giải mã [2] Trước khi thực hiện việc
mã hóa dữ liệu với đường cong, người gửi và người nhận cần phải sở hữu một cặp khóa
công cộng – khóa riêng. Các giá trị sau được quy ước chung giữa người gửi và người
nhận, gọi là các tham số chung của hệ thống mã hóa:
• Đường cong elliptic E
• Điểm P, P ∈ E . Điểm P có bậc n (nP = O)

Quá trình tạo khóa được thực hiện như sau:
• Chọn 1 số nguyên d bất kỳ: d ∈ [2, n − 2]. Đây chính là khóa bí mật.
• Tính giá trị của điểm Q = dP ∈ (E). Đây chính là khóa công khai.

21


1.3.1

Quá trình mã hóa

Thao tác mã hóa sẽ mã hóa một thông điệp bằng khóa công khai của người nhận và các
tham số đường cong đã được quy ước thống nhất chung giữa người gửi (B) và người nhận
(A).
Trình tự mã hóa được thực hiện như sau:
1. B sử dụng khóa công khai của A (QA )
2. B chọn một số nguyên bất kỳ k ∈ [2, n − 2]
3. B tính giá trị của điểm (x1 , y1 ) = k · P
4. B tính giá trị của điểm (x2 , y2 ) = k · QA .x2 là giá trị bí mật sẽ được sử dụng để tạo
khóa mã thông điệp.
5. B tạo mặt nạ (mask) Y từ giá trị bí mật x2 . Giá trị của Y được tạo thành từ một hàm
mask generation. Tùy theo việc cài đặt hàm mask generation mà Y sẽ có giá trị khác
nhau. Y chính là khóa quy ước để mã hóa thông điệp.

6. B tính giá trị C = Ø(Y, M ). C chính là thông điệp đã được mã hóa. Thông thường
Ø(Y, M ) = Y

M

7. B gửi cho A thông điệp đã mã hóa C cùng với giá trị (x1 , y1 )
- Giá trị k và (x1 , y1 ) được tạo ra không phải khóa riêng và khóa công khai để giao
dịch của B. Đây là cặp khóa công khai - khóa bí mật được phát sinh nhất thời nhằm
mã hóa thông điệp. Mỗi một thông điệp mã hóa nên sử dụng một cặp khóa công
khai - khóa bí mật được phát sinh ngẫu nhiên.
1.3.2

Quá trình giải mã

Bằng việc sử dụng các tham số quy ước kết hợp với khóa bí mật r của người nhận A và
giá trị (x1 , y1 ), A thực hiện giải mã thông điệp được mã hóa bằng ECES (C) theo trình tự
sau:
1. A nhận giá trị (x1 , y1 )
2. A tính giá trị của điểm (x2 , y2 ) = d · (x1 , y1 ). x2 là giá trị bí mật sẽ được sử dụng để
tạo khóa giải mã thông điệp.
22


3. Sử dụng cùng một hàm tạo mặt nạ (mask function) như đã sử dụng ở giai đoạn mã
hóa, A tạo mặt nạ Y từ giá trị bí mật x2 . Y chính là khóa bí mật để giải mã.
4. A giải mã thông điệp C để lấy thông điệp M ban đầu bằng cách tính giá trị M =
Ø−1 (C, Y ). Thông thường, Ø−1 (C, Y ) = C
Y.
Dựa vào chi phí tính toán để thực hiện tính nhân vô hướng Q = rP thông qua chi
phí của các phép toán trên điểm được trình bày ở phần trên kết hợp với trình tự mã hóa

dữ liệu trên ECC, ta thấy thời gian tạo khóa, lập mã và giải mã phụ thuộc rất nhiều vào
việc tính phép nhân vô hướng Q = rP . Một số vấn đề được đặt ra là:
• Biểu diễn của r thay đổi như thế nào trên miền số khác nhau?
• Làm sao tìm được một biểu diễn tốt nhất của r tương ứng với các miền xác định?
• ...

Để giải quyết các vấn đề này, hiện nay đã có rất nhiều nghiên cứu đề xuất ra các
phương pháp tính nhân vô hướng khác nhau nhằm giảm thời gian tính toán và tăng tốc
độ mã hóa đường cong Elliptic như phương pháp nhân đôi và cộng điểm, hay còn gọi
là phương pháp nhị phân [6], phương pháp sử dụng chuỗi hình thức không liền kề NAF
[4, 5], phương pháp DBNS [4, 5], phương pháp sử dụng chuỗi cơ số kép [8], . . . Chương
tiếp theo đề cập đến quá trình hoàn thiện mã hóa qua các phương pháp nhân vô hướng và
xây dựng công thức tính chi phí cần tối ưu cho từng phương pháp.

23


×