Tải bản đầy đủ (.docx) (50 trang)

BÁO cáo TIỂU LUẬN môn học tìm hiểu về mật mã trên đường cong elliptic

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 (722.67 KB, 50 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HỒ CHÍ MINH

BÁO CÁO

TIỂU LUẬN MƠN HỌC

Tìm hiểu về mật mã trên đường cong
Elliptic
Mơn học: Mã hố và thám mã
Ngành:

CƠNG NGHỆ THƠNG TIN

Giảng viên: TS. Vũ Thanh Hiền
Nhóm học viên thực hiện
MSHV

Họ và Tên

Lớp

2241860006

Trương Lâm Hữu Lộc

22SCT11

2241860001

Trần Minh Duyệt



22SCT11

Tháng 10 - 2022

TIEU LUAN MOI download : moi nhat


Mật mã trên đường cong Elliptic
MỤC LỤC
Danh mục hình ảnh...............................................................................................
Chương 1: Hệ mật mã khóa cơng khai.................................................................

1.1Giới thiệu..................................................................

1.2Lý thuyết số..............................................................

1.2.1Một số khái niệm..

1.2.2Định lý Fermat......

1.2.3Phép logarit rời rạc

1.3Bảo mật, Chứng thực và Chống chối bỏ..................

1.4Trao đổi khóa...........................................................

1.4.1Trao đổi khóa cơng

1.4.2Dùng mã hóa cơng


1.5Phương pháp trao đổi khóa Diffie - Hellman...........
Chương 2: Hệ mật đường cong Elliptic..............................................................

2.1Đường cong Elliptic.................................................

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

2.1.2Cộng các điểm trên
2.1.2.1 Trường hợp 2 điểm không trùng nhau

2.1.2.2 Trường hợp 2 điểm trùng nhau P 1=P 2........

2.1.3Nhân vô hướng cá
2.1.4Nhóm (+) của các

2.1.5Đương cong Ellipt

2.1.5.1 Trường hữu hạn F q......................................
2

TIEU LUAN MOI download : moi nhat


2.1.5.2 Tổng số điểm của đường cong Elliptic trên trường hữu hạn Fq.28
2.2 Mật mã trên đường cong Elliptic..............................................................31
2.2.1 Thiết lập cơ sở................................................................................... 31
2.2.1 Bài tốn lơ ga rít rời rạc (DLP) trên đường cong elliptic..................31
Bài tốn lơ-ga-rít rời rạc trên đường cong Elliptic (ECDLP).................32
2.2.2 Trao đổi khóa.....................................................................................32

2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH........................................ 32
2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV...............................................33
2.2.3 Mã hóa - Giải mã...............................................................................34
2.2.3.1 Mã hóa Massey-Omura.............................................................. 34
2.2.3.2 Mã hóa ElGamal.........................................................................35
2.2.3.3 Mã hóa ECIES............................................................................35
2.2.4 Các hệ chữ ký trên đường cong Elliptic:...........................................37
2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic............................................... 37
2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA)............................................37
2.3 Nhúng số vào điểm trên đường cong Elliptic...........................................38
2.3.1 Chuyển thông báo thành số nguyên thuộc Fp.................................... 38
2.3.2 Nhúng bản rõ.....................................................................................39
2.4 Độ an toàn của hệ mật trên đường cong Elliptic...................................... 40
Tài liệu tham khảo..............................................................................................42

3

TIEU LUAN MOI download : moi nhat


Danh mục hình ảnh
Hình 1 Mơ hình mã hóa đối xứng........................................................................ 5
Hình 2 Bảng giá trị modulo với n = 19.............................................................. 11
Hình 3 Mơ hình bảo mật với mã hóa cơng khai.................................................12
Hình 4 Mơ hình chống chối bỏ với mã hóa cơng khai....................................... 12
Hình 5 Mơ hình kết hợp bảo mật, chúng thực và chống chối bỏ....................... 13
Hình 6 Trao đổi khóa cơng khai tự phát.............................................................13
Hình 7 Trao dổi khóa cơng khai dùng trung tâm chứng thực.............................14
Hình 8 Thiết lập khóa phiên bí mật bằng mã hóa khóa cơng khai.....................15
Hình 9 Tấn công Man in the middle với phương pháp Diffie - Hellman...........16

Hình 10 Bảo vệ khóa Diffie – Hellman bằng khóa cơng khai............................17
Hình 11 Phép cộng trên đường cong Elliptic..................................................... 20
Hình 12 Ví dụ về tính chất kết hợp trên đường cong Elliptic............................ 23

4

TIEU LUAN MOI download : moi nhat


Chương 1: Hệ mật mã khóa cơng khai
1.1 Giới thiệu
Xét mơ hình mật mã cổ điển với Alice (người gửi) và Bob (người nhận), chọn
một khóa bí mật K. Sau đó dùng K để mã hóa eK và luật giải mã dK. Trong hệ
mật này dK hoặc giống eK hoặc dễ dàng được phân tích từ eK (ví dụ trong hệ mật
DES q trình giải mã hồn tồn tương tự với q trình mã hóa nhưng với trình
tự ngược lại). Các hệ mật như thế này được gọi là hệ mật khóa bí mật, nếu để lộ
key thì tính an tồn của hệ thống sẽ khơng cịn được đảm bảo. Nhược điểm của
hệ mật này được thể hiện ở hai khía cạnh sau:
● Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một
kênh an tồn để trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có
người gửi và người nhận biết. Điều này rất không hợp lý khi mà ngày
nay, khối lượng thông tin luân chuyển trên khắp thế giới là rất lớn. Việc
thiết lập một kênh an toàn như thế sẽ tốn kém về mặt chi phí và chậm trễ
về mặt thời gian.
● Tính bí mật của khóa: Khơng có cơ sở quy trách nhiệm nếu mà khóa bị
tiết lộ.
Dựa trên cơ sở đó vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra
một phương pháp mã hóa khác mà có thể giải quyết được vấn đề trên, đó là mã
hóa khóa cơng khai (public key cryptography) hay cịn được gọi là mã hóa bất
đối xứng (asymmetric cryptography). Đây có thể xem là một bước đột phá quan

trọng nhất trong lĩnh vực mã hóa.
Xét lại mơ hình mã hóa đối xứng:

Hình 1 Mơ hình mã hóa đối xứng

5

TIEU LUAN MOI download : moi nhat


Để khắc phục điểm yếu của mã hóa đối xứng người ta tập trung vào nghiên cứu
theo hướng: có phương pháp nào để việc mã hóa và giải mã dùng hai khóa khác
nhau hay khơng? Có nghĩa là C = E(P, K1) và P = D(C, K2). Nếu thực hiện được
như vậy thì chúng ta sẽ có hai phương án tiến hành:
● Phương án 1: Người nhận (Bod) giữ bí mật khóa K2, cịn khóa K1 thì cơng
khai cho tất cả mọi người biết. Alice muốn gửi dữ liệu cho Bob thì dùng
khóa K1 để mã hóa. Bob dùng khóa K2 để giải mã. Giả sử có một người là
Charlie là kẻ tấn cơng, hắn biết khóa K1 nhưng lại khơng thể dùng chính
K1 để giải mã mà phải dùng K2. Do đó chỉ có duy nhất Bob mới có thể
giải mã được. Điều này đảm bảo tính bí mật của quá trình truyền dữ liệu.
Ưu điểm của phương pháp này là khơng cần phải truyền khóa K1 trên
kênh an tồn.
● Phương án 2: Người gửi (Alice) giữ khóa bí mật K1, cịn khóa K2 thì cơng
khai cho tất cả mọi người biết. Alice muốn gửi dữ liệu cho Bob thì dùng
khóa K1 để mã hóa. Bob dùng K2 để giải mã. Ở đây Charlie cũng biết
khóa K2 nên hắn cũng có thể giải mã được. Do đó phương pháp này
khơng đảm bảo tính bí mật. Tuy nhiên tính chất chứng thực và tính chống
chối bỏ lại được đảm bảo. Vì chỉ có duy nhất Alice biết được khóa K1,
nên nếu Bob dùng K2 để giải mã bản tin, thì điều đó có nghĩa là Alice là
người gửi bản mã. Nếu Charlie cũng có khóa K1 để gửi bản mã thì Alice

sẽ bị quy trách nhiệm làm lộ khóa K1. Trong phương án này cũng không
cần phải truyền K2 trên kênh an toàn.
Nhận thấy nếu kết hợp phương án 1 và phương án 2 thì mơ hình đề xuất có thể
khắc phục được tồn bộ nhược điểm của mã hóa đối xứng. Trong hai phương
án, một khóa được giữ bí mật chỉ một người biết, cịn khóa kia được cơng khai.
Do đó mơ hình mã hóa trên được gọi là mã hóa khóa cơng khai (hay mã hóa bất
đối xứng). Để thuận tiện ta quy ước lại các ký hiệu như sau:
● Khóa bí mật hay private key trong mơ hình trên sẽ được ký hiệu là KS.
● Khóa cơng khai hay public key được ký hiệu là KP.
● Bản rõ ký hiệu là M còn bản mã giữ nguyên ký hiệu là C
● Phương án 1 viết lại thành:
C = E (M, KS)
M=D(C,KP)
● Phương án 2 viết lại thành:
C = E (M, KP)
M=D(C,KS)
6

TIEU LUAN MOI download : moi nhat


Vấn đề cịn lại ở đây là liệu có tồn tại một mơ hình mã hóa và giải mã dùng hai
khóa khác nhau như vậy khơng? Dĩ nhiên là K P và KS khơng thể nào hồn tồn
độc lập với nhau. Phải có một mối quan hệ giữa hai khóa thì chúng ta mới có
thể tiến hành mã hóa và giải mã được. Có nghĩa là K S = f(KP). Tuy nhiên, một
yêu cầu rất quan trọng là việc tính KS = f(KP) phải là bất khả thi về mặt thời
gian. Nếu nguyên tắc này bị vi phạm thì việc giữ bí mật khóa K S khơng cịn ý
nghĩa nữa vì từ khóa cơng khai KP có thể lần lại khóa KS.
Để có được cạp khóa KS và KP thỏa mãn, người ta thường dùng các hàm một
chiều (one way function). Các hàm một chiều có tính chất là hàm nghịch đảo

của chúng rất khó thực hiện. Sau đây là ví dụ về hàm một chiều: Việc sinh ra hai
số ngun p, q và tính tích N = pq thì thực hiện dễ dàng. Tuy nhiên nếu chỉ cho
trước N và thực hiện phân tích N để tìm lại hai số nguyên p, q là việc hoàn toàn
bất khả thi về mặt thời gian. Có rất nhiều phương pháp mã hóa thuộc loại mã
hóa cơng khai:
● Hệ mật RSA: Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích
ra thừa số nguyên lớn.
● Hệ mật Merkle - Hellman: Dựa trên tính khó giải của bài tốn tổng các
tập con (bài toán này là bài toán NP đầy đủ - là một lớp khá lớn các bài
toán khơng có giải thuật được biết trong thời gian đa thức). Tuy nhiên tất
cả các hệ mật xếp ba lô khác nhau đều bị chứng minh là khơng an tồn
(Ngoại trừ Chor-Rivest).
● Hệ mật McEliece: Dựa trên lý thuyết mật mã đại số và vẫn được coi là an
toàn. McEliece giải mã cho các mã tuyến tính (Cũng là một bài tốn NP
đầy đủ).
● Hệ mật ElGamal: Dựa trên tính khó giải của tốn logarithm rời rạc trên
các trường hữu hạn.
● Hệ mật Chor-Rivest: Cũng được coi một hệ mật xếp ba lơ. Tuy nhiên nó
vẫn được coi là an toàn.
● Hệ mật trên đường cong Elliptic: Các hệ mật này là biến tướng của hệ
mật khác (Hệ mật ElGamal), chúng làm việc trên các đường cong Elliptic
chứ không phải là trên các trường hữu hạn. Hệ mật này đảm bảo độ mật
với số khóa nhỏ hơn các hệ mật khóa cơng khai khác.
Một chút ý quan trọng là một hệ mật khóa cơng khai khơng bao giờ có thể đảm
bảo được độ mật tuyệt đối (an tồn vơ điều kiện). Sở dĩ như vậy là khi nghiên
cứu một bản mã, y có thể mã lần lượt các bản tin rõ bằng luật mã hóa cơng khai
eK cho tới khi tìm được bản rõ duy nhất x đảm bảo y = e K (x). Bản rõ này chính
là kết quả giải mã của y. Bởi vậy ta chỉ nghiên cứu độ mật về mặt tính tốn của
các hệ mật này.
7


TIEU LUAN MOI download : moi nhat


Khi nghiên cứu về hệ mật khóa cơng khai có một khái niệm cần phải tìm hiểu
đó là hàm cửa sập một chiều (one way trapdoor functions). Ta sẽ định nghĩa
khái niệm này một cách khơng hình thức. Hàm mã hóa cơng khai e K của Bob
phải là một hàm dễ tính tốn. Song việc tìm hàm ngược (hàm giả mã) rất khó
khăn (đối với bất kỳ ai khơng phải là Bob). Đặc tính này thường được gọi là đặc
tính một chiều. Bởi vậy điều kiện cần thiết là eK phải là hàm một chiều.
Các hàm một chiều rất quan trọng trong mật mã học, chúng rất quan trọng trong
các hệ mật khóa cơng khai và trong nhiều lĩnh vực khác. Đáng tiếc là mặc dù có
rất nhiều hàm được coi là hàm một chiều nhưng cho đến nay vẫn khơng tồn tại
một hàm nào có thể chứng minh được là hàm một chiều. Sau đây là một ví dụ
về một hàm được coi là hàm một chiều. Giả sử n là tích của hai số nguyên⟶ tố
p và q, giả
sử b là một số nguyên dương. Khi đó ta xác định ánh xạ f: Z n Zn là
f(x) = xb mod n (với b và n đã được chọn thích hợp thì đây chính là hàm mã
RSA).
Để xây dựng một hệ mật khóa cơng khai thì việc tìm được một hàm một chiều
vẫn chưa đủ. Ta không muốn e K là hàm một chiều đối với Bob vì anh ta phải có
khả năng giải mã các bản tin nhận được một cách hiệu quả. Điều cần thiết là
Bob phải có một cửa sập chứa thơng tin bí mật cho phép dễ dàng tìm hàm của
eK. Như vậy Bob có thể giải mã một cách hiệu quả vì anh ta có một thơng tin
tuyệt mật về khóa. Bởi vậy một hàm được gọi là cửa sập một chiều (one way
trapdoor functions) nếu nó là hàm một chiều và nó trở nên dễ tính ngược nếu
biết một cửa sập nhất định.
1.2 Lý thuyết số
1.2.1 Một số khái niệm
Phép chia modulo

Phép chia modulo là phép chia lấy phần dư.
Ví dụ:
27 mod 8 = 3
35 mod 9 = 8.
Một cách tổng quát: a mod n = r với a ≥ 0; n > 0; 0 ≤ r ≤ n-1

8

TIEU LUAN MOI download : moi nhat


Nếu hai số a, b có cùng số dư trong phép chia cho n thì ta nói rằng a và b
là đồng dư trong phép chia modulo n, phép so sánh đồng dư được ký hiệu
bằng dấu:
a ≡ b (mod n) hay viết tắt là a ≡ b mod n
Có thể thấy phép toán modulo phân hoạch tập số tự nhiên N thành n lớp
tương đương đồng dư ứng với các giá trị của r trong tập {0, 1, 2, 3…,n1}. Ví dụ với n = 4 ta có 4 lớp tương đương sau:
{0, 4, 8, 12, 16...}
{1, 5, 9, 13, 17...}
{2, 6, 10, 14, 18…}
{3, 7, 11, 15, 19…}
Tính chất của phép modulo
Cho a, b và n là các số ngun, phép modulo có các tính chất:
(a
Ước số

(a
(a
Nếu a mod n = 0 (viết cách khác của a ≡ 0 mod n) thì có nghĩa là a chia
hết cho n, hay n là ước số của a.

Ước số chung lớn nhất của hai số: ký hiệu là gcd(a, b). Để tìm UCLN của
hai số a, b chúng ta có thể sử dụng thuật toán Euclid.
Số nguyên tố
Một số p được gọi là số nguyên tố nếu p chia hết cho 1 và chính nó, ngồi
ra khơng chia hết cho số nào khác từ 2 đến p - 1.
Số nguyên tố cùng nhau

b là 1. Ký hiệu: a⏊b. Ví dụ: 3⏊8, 7⏊9. Hai số 20 và 15 không nguyên tố cùng nhau vì UCLN của chúng là 5.

Hai số nguyên a, b được gọi là nguyên tố cùng nhau nếu UCLN của a và

Phần tử nghịch đảo trong phép nhân modulo
Nếu hai số nguyên a và n nguyên tố cùng nhau, thì tổn tại một số nguyên
w sao cho:
a.w ≡ 1 mod n
Ta gọi w là phần tử nghịch đảo của a trong phép modulo cho n và ký hiệu
là a-1
Ví dụ:
n = 10, a = 7 là hai số ngun tố cùng nhau, do đó tìm được a-1 = 3
(21 ≡ 1 mod 10)
9

TIEU LUAN MOI download : moi nhat


n = 10, a = 2 không phải là hai số nguyên tố cùng nhau, ta có bảng
phép nhân
Trong bảng trên không tồn tại số a-1 sao cho a.a-1 đồng dư 1 mod 10. Vậy
không tồn tại phần tử nghịch đảo. Để tính a-1 có thể dùng thuật tốn
Euclid mở rộng

Tính chất phần tử sinh của z¿n
z¿n có phần tử sinh nếu và chỉ nếu n = 2, 4, pk hoặc 2pk, trong đó p
là một số nguyên tố lẻ và k ≥ 1. Đặc biệt, nếu p là một số ngun tố
thì z¿n có phần tử sinh.
Nếu α là một phần tử sinh của z¿n thì:
z¿n={α mod n|0 ≤ ≤ ϕ (n)−1}

Giả sử rằng α là một phần tử sinh của z¿n khi đó b=α mod n cũng là
một phần từ của z¿n nếu và chỉ nếu ( ,ϕ (n))=1. Từ đó ta rút ra rằng
z¿n là cyclic thí số cá phần tử sinh là ϕ (ϕ (n)).
α ∈ Z¿n là một phần của z¿n nếu và chỉ nếu αΦ( n) ∕ p ≠ 1 (mod n) đối
với mỗi nguyên tố p của ϕ (n).
1.2.2 Định lý Fermat
Định lý:
Nếu p là số nguyên tố và a là số nguyên khơng chia hết cho p thì ap-1 ≡ 1
mod p
Chứng minh:
Xét tập X gồm p-1 phần tử:
X = {a mod p, 2a mod p, …, (n-1)a mod p}
Ta có hai nhận định sau:
- Khơng có phần tử nào của tập X bằng 0 vì a nguyên tố cùng nhau
với p.
- Không tồn tại hai phần tử thứ i và thứ j (i
ja mod p. Vì a nguyên tố cùng nhau với p
modulo p. Do đó nếu ia ≡ ja mod p thì iaa
≡ j mod p. Điều này trái với giả thiết i
Từ hai nhận xét trên ta suy ra các phần tử
trị {1, 2, 3…, p- 1}. Do đó:
a a …


Sau đây là

2a …(p

4

a


m
p = 5, a = 7
p = 7, a = 46 => 64.64 = 4096, 4096 ≡ 1 mod 5


TIEU LUAN MOI download : moi nhat


1.2.3 Phép logarit rời rạc
Ta định nghĩa phép lũy thừa modulo như hình, để tính y từ a, x từ n và các
số nguyên:
y = ax mod n = (a.a…a) mod với x số a nhân với nhau
Ta chỉ xét trường hợp n là số nguyên tố. Bảng minh hoặc các giá trị của
phép lũy thừa modulo với n = 19, a và x từ 1 đến 18.

Hình 2 Bảng giá trị modulo với n = 19

Nhìn vào bảng trên, ta thấy rằng khơng phải hàng nào cũng có giá trị từ 1
đến 18. Xét hàng a = 11, ta có:
111 ≡11 mod 19
112 = 121 ≡ 7 mod 19

113 = 1331 ≡ 1 mod 19
114 = 113.11 ≡ 11 mod 19
115 ≡ 112 mod 19
Do đó hang a = 11 (tương ứng với dãy 11 1, 112,..., 1118) chỉ có ba giá trị 11,
7, 1 được lặp theo chu kỳ.
Trong bảng trên chỉ có các giá trị a = 2, 3, 10, 13, 14, 15 là làm cho dãy a 1,
a2, …, a18 có đầy đủ các giá trị từ 1 đến 18 với phép modulo 19. Như vậy chỉ
có a = 2, 3, 10, 13, 14, 15 thì phép lũy thừa modulo mới khả nghịch.
Trong trường hợp tổng quát với mỗi n chỉ có một trường hợp của a thì phép
lũy thừa là khả nghịch. Lúc này a được gọi là primitive root của n.
11

TIEU LUAN MOI download : moi nhat


Và cũng tương tự như số thực, nếu biết y, a và n, muốn tìm lại x thì ta cũng
dùng làm logarit, được gọi là logarit rời rạc.
x = d loga, n y
Tuy nhiên không giống như số thực, việc tính logarit rời rạc đã được chứng
minh là rất tốn kém về mặt thời gian. Và được xem như là bất khả thi nếu a
và n là các số lớn. Do đó phép lũy thừa modulo cũng được xem là hàm một
chiều và được ứng dụng trong phương pháp trao đổi khóa Diffie - Hellman.
1.3 Bảo mật, Chứng thực và Chống chối bỏ
Giả sử Alice muốn gửi dữ liệu cho Bob dùng mã hóa cơng khai, trước tiên Alice
và Bob sẽ chọn cặp khóa bí mật - khóa cơng khai. Ký hiệu cặp khóa của Alice là
KPA - KSA, cặp khóa của Bob là KPB - KSB. Như vậy để gửi dữ liệu bí mật chó
Bob, Alice sẽ dùng phương án 1: mã hóa dữ liệu bằng khóa cơng khai K PB của
Bob, và Bob dùng khóa bí mật KSB để giải mã.
C =
E (M,

KPB) M = D
(C, KSB)

Hình 3 Mơ hình bảo mật với mã hóa cơng khai

Để đảm bảo tính xác thực và Alice khơng thể chối bỏ trách nhiệm gửi dữ liệu,
Alice sẽ dùng phương án 2: Alice mã hóa dữ liệu bằng khóa riêng K SA, và Bob
dùng khóa cơng khai KPA của Alice để giải mã.
C = E (M, KSA)
M = D (C, KPA)

Hình 4 Mơ hình chống chối bỏ với mã hóa cơng khai

12


TIEU LUAN MOI download : moi nhat


Cùng với giả định rằng thông điệp là một dãy bit có cấu trúc, nếu bản giải mã
của Bob hợp lệ thì rõ ràng là Alice là người gửi vì chỉ có Alice mới có khóa bí
mật KSA. giống như mã hóa đối xứng, nếu Charlie can thiệp chỉnh sửa trên bản
mã C thì Bob sẽ giải mã ra bản rõ là một dãy bit vơ nghĩa. Cịn nếu Charlie có
được khóa KSA thì Alice khơng thể thối thác trách nhiệm là lộ khóa. Tuy nhiên
mơ hình trên khơng đảm bảo tính bí mật. Vì khơng chỉ riêng Bob, Charlie cũng
biết được khóa cơng khai KPA của Alice. Do đó Charlie có thể giải mã bản mã C
và biết được nội dung của bản rõ M.
Để giải quyết vấn đề trên, người ta kết hợp tính bí mật, chứng thực và chống
chối bỏ qua mơ hình:
C = E(E (M, KSA), KPB)

M = D(D (C, KPA), KSB)

Hình 5 Mơ hình kết hợp bảo mật, chúng thực và chống chối bỏ

1.4 Trao đổi khóa
1.4.1 Trao đổi khóa cơng khai
Khi hai người muốn truyền dữ liệu với nhau bằng phương pháp mã hóa
khóa cơng khai, trước tiên họ phải trao đổi khóa cơng khai cho nhau. Vì đây
là khóa cơng khai nên khơng cần giữ bí mật việc trao đổi này, khóa có thể
truyền công khai trên kênh truyền thường. Alice và Bob, hay bất cứ người
nào khác có thể cơng bố rộng rãi khóa cơng khai của mình theo mơ hình
bên dưới:

Hình 6 Trao đổi khóa cơng khai tự phát

13

TIEU LUAN MOI download : moi nhat


Tuy nhiên ở đây chúng ta lại gặp phải vấn đề về chứng thực. Làm thế nào
mà Alice đảm bảo rằng KPB chính là khóa cơng khai của Bob? Charlie có thể
mạo danh Bob bằng cách lấy khóa KPC của Charlie và nói rằng đó là khóa
cơng khai của Bob. Vậy nên, việc trao đổi khóa khóa cơng khai theo mơ
hình gọi là “Chứng chỉ khóa cơng khai” (public key certificate). Trong mơ
hình này có một tổ chức làm nhiệm vụ cấp chứng chỉ được gọi là trung tâm
chứng thực (Certificate Authority - CA). Các bước thực hiện cấp chứng chỉ
cho Alice như sau:
➔ Alice gửi định danh IDa và khóa cơng khai KPA của mình đến trung
tâm chứng thực.

➔ Trung tâm chứng nhận kiểm tra tính hợp lệ của Alice, ví dụ nếu IDa là
“Microsoft”, thì Alice phải có bằng chứng chứng tỏ mình thực sự là
cơng ty Microsoft.
➔ Dựa trên cơ sở đó, trung tâm chứng thực cấp một chứng chỉ Ca để xác
nhận rằng khóa cơng khai KPA đó là tương ứng với IDa. Chứng chỉ
được ký chứng thực bằng khóa riêng của trung tâm để đảm bảo rằng
nội dung của chứng chỉ là do trung tâm ban hành.
➔ Alice công khai chứng chỉ CA.
➔ Bob muốn trao đổi thơng tin với Alice thì sẽ giải mã CA bằng khóa
cơng khai của trung tâm chứng thực để có được khóa cơng khai KPA
của Alice. Do đó nếu Bob tin tưởng vào trung tâm chứng thực thfi Bob
sẽ tin tưởng là KPA là tương ứng với IDa, tức tương ứng với Alice.

Hình 7 Trao dổi khóa cơng khai dùng trung tâm chứng thực

Như vậy có thể nhận thấy rằng nếu Bob muốn gửi thơng điệp cho Alice,
David,... thì Bob khơng cần phải tin tưởng vào khóa cơng khai của Alice,
14

TIEU LUAN MOI download : moi nhat


David hay bất kỳ ai. Bob chỉ cần tin tưởng vào trung tâm xác thực và khóa
cơng khai của trung tâm chứng thực là đủ.
Hiện nay mơ hình chứng chỉ khóa cơng khai đang được áp dụng rộng rãi với
chuẩn của chứng chỉ là chuẩn X.509. Trên thế giới có khoảng 80 tổ chức
chức chứng thực chứng chỉ khóa cơng khai.
1.4.2 Dùng mã hóa cơng khai để trao đổi khóa bí mật
Do đặc điểm tốn học của phương pháp mã hóa khóa cơng khai, thời gian
mã hóa và giải mã của phương pháp này chậm hơn so với phương án mã

hóa đối xứng. Trong thực tế, đối với vấn đề bảo đảm tính bảo mật, người ta
vẫn sử dụng phương pháp mã hóa đối xứng. Mã hóa khóa cơng khai được
dùng để thiết lập khóa bí mật cho mỗi phiên trao đổi dữ liệu. Lúc này khóa
bí mật được gọi là khóa phiên (session key), các phiên trao đổi dữ liệu khác
nhau sẽ dùng các khóa bí mật khác nhau.

Hình 8 Thiết lập khóa phiên bí mật bằng mã hóa khóa cơng khai

Alice tạo một khóa phiên KS, mã hóa bằng khóa bí mật của Alice, sau đó mã
hóa bằng khóa cơng khai của Bob. Bob giải mã KS dùng khóa bí mật của
Bob và khóa khơng khai của Alice. Nhờ tính bí mật, Alice biết chắc ngồi
Alice chỉ có Bob mới biết được K S. Nhờ tính chống chối bỏ, Bob biết rằng
ngồi Bob chỉ có Alice mới biết được K S vì Alice dùng khóa riêng để mã
hóa KS. Do đó KS có thể được dùng làm khóa bí mật cho mã hóa đối xứng
để trao đổi dữ liệu giữa Alice và Bob. Sau phiên trao đổi dữ liệu, K S được
hủy bỏ nên khóa bí mật này sẽ ít có khả năng bị lộ. Lúc này vai trị của mã
hóa cơng khai khơng phải là bảo mật dữ liệu mà là bảo đảm tính bí mật của
khóa đối xứng, chỉ có Alice và Bob biết khóa KS.
1.5 Phương pháp trao đổi khóa Diffie - Hellman
Phương pháp trao đổi khóa Diffie - Hellman dùng để thiết lập một khóa bí mật
giữa người gửi và người nhận mà khơng cần dùng đến mã hóa cơng khai như đã
15

TIEU LUAN MOI download : moi nhat


trình bày ở trên. Phương pháp này dùng hàm một chiều làm logarit rời rạc.
Diffie - Hellman khơng có ý nghĩa về mặt mã hóa giống RSA.
Trước tiên Alice và Bob sẽ thống nhất sử dụng chung một số nguyên tố p và số
nguyên tố g nhỏ hơn p và là primitive root của p (nghĩa là phép toán g x mod p

khả nghịch). Hai số p và g không cần giữ bí mật. Sau đó Alice chọn một số a và
giữ bí mật số a này. Bob cũng chọn một số b và giữ bí mật số b. Tiếp theo Alice
tính và gửi ga mod p cho Bob, Bob tính bà gửi g b mod p cho Alice. Trên cơ sở
đó:
Alice tính: (gb)a mod p
Bob tính: (ga)b mod p
Do đó Alice và Bob có chung giá trị gab mod p. Giá trị này có thể dùng làm khóa
cho phép mã hóa đối xứng. Như vậy, kẻ phá mã Charlie có thể có được g, p, g a
và gb. Muốn tính được gab mod p, Charlie khơng thể dùng cách:
ga gb mod p = ga+b mod p khác gab mod p
Muốn tính được gab mod p, Charlie phải tính được a hoặc b. Tuy nhiên việc tính
a hay b theo công thức:
a = d logg, p ga
b = d logg, p gb
Điều này là khơng khả thi do tính phức tạp của logarit rời rạc. Vậy Charlie
khơng thể nào tính được giá trị g ab mod p. Hay nói cách khác, khóa dùng chung
được trao đổi bí mật giữa Alice và Bob. Tuy nhiên, thuật toán Diffie - Hellman
lại thất bại đối với kiểu tấn công Man in the middle. Trong phương pháp tấn
công này, Charlie đứng giữa Alice và Bob. Charlie chặn các thông điệp giữa
Alice và Bob, giả mạo các thông điệp mà Alice và Bob không hay biết. Alice
vẫn nghĩ là nhận dữ liệu từ Bob và ngược lại. Do đó, Charlie có thể thiết lập
khóa Diffie - Hellman gac mod p với Alice và khóa gbc mod p với Bob. Khi Alice
gửi dữ liệu, Charlie giải mã bằng khóa gac mod p sau đó mã hóa lại bằng gbc mod
p và gửi cho Bob. Như vậy Alice và Bob khơng hay biết cịn Charlie thì xem
được dữ liệu.

Hình 9 Tấn cơng Man in the middle với phương pháp Diffie - Hellman

Để an tồn, q trình thiết lập khóa Diffie - Hellman vẫn phải được mã hóa
bằng một khóa cơng khai. Lúc này một câu hỏi được đặt ra là nếu đã được bảo

16

TIEU LUAN MOI download : moi nhat


vệ bằng khóa khơng khai rồi, thì có thể chọn khóa đối xứng bất kỳ, cần gì chọn
khóa Diffie - Hellman? Tuy nhiên có một số trường hợp, khi mà cách thức tấn
công Man in the middle không thể thực hiện được thì phương thức Diffie Hellman tỏ ra rất hữu dụng.
Trong mơ hình thiết lập khóa phiên bằng mật mã khóa cơng khai, giả sử Charlie
ghi nhận lại hết tất cả các thông điệp giữa Alice và Bob. Sau này nếu Charlie
phát hiện ra được khóa bí mật K SA và KSB của Alice và Bob, Charlie có thể khơi
phục lại được khóa đối xứng K S. Và từ đó Charlie có thể khơi phục lại các bản
rõ mà được mã hóa bằng KS này. Bây giờ ta xét mơ hình sau dùng Diffie Hellman được bảo vệ bằng mã hóa khóa cơng khai:

Hình 10 Bảo vệ khóa Diffie – Hellman bằng khóa cơng khai

Trong mơ hình trên, dù cho Charlie phát hiện được khóa bí mật K SA và KSB của
Alice và Bob thậm chí là cả ga mod p và gb mod p. Thế nhưng Charlie cũng sẽ
khơng thể nào khơi phục lại được khóa bí mật g ab mod p. Và do đó khơng thể
khơi phục lại các bản rõ giữa Alice và Bob. Đây chính là ý nghĩa của phương
pháp Diffie - Hellman.

17

TIEU LUAN MOI download : moi nhat


Chương 2: Hệ mật đường cong Elliptic
2.1 Đường cong Elliptic
2.1.1 Định nghĩa

Dạng phổ biến của đường cong Elliptic E mà chúng ta thường thấy là đồ thị
của phương trình y2=x3 + Ax+B, trong đó A và B là các hằng số.
Đó là phương trình Weierstrass đối với đường cong Elliptic. Chúng ta cần
chỉ ra A, B, x thuộc tập nào. Thường thường, chúng được lấy từ một trường
hữu hạn, chẳng hạn trường số *thực R, trường số phức C, trường số hữu tỉ
Q, một trong các trường Fp (Zp ) đối với số nguyên tố p, hoặc một trong các
trường hữu hạn Fq với q = pk , k≥1. Có thể nói rằng đó là các trường hay
gặp nhất trong nghiên cứu mật mã
trên đường cong Elliptic.

Nếu K là một trường mà A, B K, thì người ta nói rằng E được xác định trên
K. Ta quy ước rằng E và K là ký hiệu đường cong Elliptic và trường mà E
xác định trên nó.
Nếu ta muốn xét các điểm có các tọa độ thuộc một trường L ⊇K thì ta viết
E(L). Theo định nghĩa tập này ln ln có điểm ∞ được định nghĩa :
E ( L)={∞} ∪{( x , y ) ∈ Lx L|y2=x3 + Ax+B}

Để có cái nhìn trực quan về đường cong Elliptic ta sẽ có một vài nghiên cứu
sơ bộ trên trường số thực R. Chúng có hai dạng cơ bản như sau.
Đường cong y2=x3−x có 3 nghiệm thực khác nhau, cịn đường cong y2=x3 +x
có duy nhất 1 nghiệm thực.
Điều gì xảy ra nếu có nghiệm bội? Người ta khơng cho phép điều này, nên
giả thiết rằng 4 A3 +27 B2 ≠ 0.
Nếu đường bậc 3 có các nghiệm r1, r2, r3 thì có thể chứng minh rằng biệt
thức của đường cong này là ((r1−r2 )(r1−r3 )( r2−r3 ))2=−(4 A3+27 B2 ).

a. y2=x3−x
b.y2=x3 +x
Do đó các nghiệm của đường cong phải khác nhau. Tuy nhiên, trường hợp
các nghiệm không khác nhau vẫn rất thú vị. Nhưng trong tài liệu này sẽ

không đề cập tới cới trường hợp đó. Dạng tổng qt của phương trình
Weierstrass của đường cong Elliptic được biểu diễn như sau:
18

TIEU LUAN MOI download : moi nhat


y2 +a1 xy +a3 y=x3 +a2 x2+a4 x+ a6

Trong đó a1, …, a6 là các hằng số. Dạng tổng quát hơn này rất có ích khi
làm việc với trường đặc số 2 và 3(chap(K)). Nếu đặc số của trường là khác
2 thì có thể chia cho 2 và biến đổi về dạng:
(y+

a1 x a 3
2 + 2

) =x +(a
2

3

2

a

+ 421

)x +(a
2


4

+

a1 a3
4

)x+(a4

23

+a6

)

Hay có thể viết nó như sau
y21=x3 +a'2 x2 ⊢ a'4 x+ a'6

a1 x a 3
'
'
'
2 + 2 và các hằng số a 2 ,a 4 ,a 6. Khi K có đặc số bằng 3
a
hay khác 3 ta có thể dùng phép thế x1=x + 32 và ta có:

Với y1= y +

y21=x31 + Ax+B


Vì lý do kỹ thuật, sẽ có lợi nếu thêm điểm ở vơ cùng vào đường cong Elliptic.
Cách dễ dàng nhất là xem nó như điểm (∞, ∞) và ký hiệu đơn giản hơn là ∞
khi đặt nó ở đỉnh của trục y. Vì mục đích tính tốn, xem nó là ký hiệu hình
thức thỏa mãn những quy tắc tính tốn nhất định. Chẳng hạn, một đường thẳng
được nói là đi qua điểm ∞ khi nó là trục thẳng đứng (nghĩa là x
= hằng số). Điểm ∞ có vẻ khơng tự nhiên lắm nhưng việc đưa nó vào là rất
có lợi.
Để thuận lợi hơn, ta khơng chỉ xem nó ở đỉnh của trục y mà cịn xem nó ở
đáy của trục y. Cụ thể, ta xem hai đầu của trục y như gặp nhau ở điểm ∞.
Điều này dường như hơi lạ. Tuy nhiên, nếu ta đang làm việc trên một
trường thay vì các số thực, chẳng hạn trên trường hữu hạn, thì sẽ khơng có ý
nghĩa việc sắp thứ tự các phần tử và do đó việc phân biệt đỉnh và đáy của
trục y sẽ khơng có ý nghĩa. Thật ra, trong trường hợp này các đầu của trục y
sẽ khơng có ý nghĩa trước khi chúng ta giới thiệu các tọa độ xạ ảnh. Đó là lý
do vì sao tốt nhất là xem ∞ như ký hiệu hình thức thỏa mãn những tính chất
nhất định. Cũng vậy, ta phải sắp xếp để hai đường thẳng đứng gặp nhau ở
∞. Theo tính đối xứng, nếu chúng gặp nhau ở đỉnh của trục y thì chúng
cũng gặp nhau ở đáy của nó. Nhưng hai đường thẳng phải cắt nhau ở một
điểm duy nhất, do đó “đỉnh ∞” và “đáy ∞” phải là một. Trong mọi trường
hợp, điều này sẽ là một tính chất có lợi của ∞.

2.1.2 Cộng các điểm trên đường cong Elliptic
Xét hai điểm P1=( x1 , y1 ) và P2=( x2 , y2)trên đường cong Elliptic E
y2 +a1 xy +a3 y=x3 +a2 x2+a4 x+ a6

19

TIEU LUAN MOI download : moi nhat



Phép cộng giữa hai điểm trên đường cong E được định nghĩa như sau:
P3 (x3 , y3 )=P1 ( x1 , y1 )+P2 ( x2 , y2 )
Trong đó P3 ( x3 , y3 )=−P'3 (x3 , y'3), điểm P'3 ( x3 , y'3 )là giao điểm của đường
cong E và đường thẳng đi qua P1 và P2. Vì 2 điểm P3 ( x3 , y3 )và −P'3 (x3 , y'3 )đều
nằm trên đường cong E nên (x3 , y3 )và (x3 , y'3)phải thỏa mãn phương trình (1.2).
Cơng thức để tính các giá trị (x3 , y3 )sẽ được chứng minh ở dưới đây

Hình 11 Phép cộng trên đường cong Elliptic

Trong các các tài liệu cơ bản và nâng cao được tham chiếu nhiều về đường
cong Elliptic như [3, 7, 8] người viết vẫn chưa thỏa mãn với các dẫn dắt và
chứng minh công thức tổng quát cho các giá trị (x3 , y3 ), do đó các cơng
thức này sẽ được chứng minh chi tiết trong tài liệu này. Đường thẳng đi qua
2 điểm P1 và P2 có phương trình là:
y= λx+ μ

Trong đó λ là hệ số góc của đường thẳng đi qua P1 ,P2. Ta có:
y1=λ x1 + μ
y2=λ x2 + μ

20

TIEU LUAN MOI download : moi nhat


y'3= λ x3 + μ

2.1.2.1 Trường hợp 2 điểm không trùng nhau P1 ≠ P2
Từ (1.5) và (1.6) suy ra: y1− y2=x ( x1−x2 ), khi P1 ≠ P2, nghĩa là x1 ≠ x2ta

có cơng thức:
λ=

y− y
1

2

x1−x2
y− y
x y −x y
2 × x1=
1
2
2
1
μ= y1−λ x1= y1− 1
x1−x2
x1−x2

Tiếp theo thay y ở (1.4) vào phương trình (1.2) ta có:
(λx + μ)2 +(a1 x+a3 ) ( λx+μ )=x3 +a2 x2+a4 x+a6

Từ đó dẫn đến phương trình r ( x )=0 với:
r ( x )=x3+ (a2−λ2−a1 λ) x2+(a4 −2 λμ−a3 λ−a1 μ )x +a6−μ2−a3 μBiết rằng r(x) có
3 nghiệm phân biệt nên có thể viết:
r ( x )=( x−x1 )( x−x2 )(x −x3 )
¿ (x2−( x1 + x2 )x +x1 x2 )(x−x3 )
3


) x2+ x1 x2 x−x3 x2 +( x1+ x12 ) x3−x1 x2 x3
3
2
¿ x −(x1 + x2 + x3 ) x +(x1 x2 +x1 x3 + x2 x3 ) x−x1 x2 x3
Đồng nhất các hệ số x2 của r(x) ở 2 phương trình (*) và (**) ta có:
2
x 1+ x2 +x3=−(a2− λ −a1 λ ) từ đây có thể tính được x3 theo công thức sau:
¿ x −(x1 + x2

x3=λ2+a1 λ−a2−x1−x2

Đến đây cần phải tính tiếp giá trị y3, lúc này x3 đã tính xong nên có thể
coi là hằng số, có thể viết lại (1.2) thành dạng sau:
y2 +(a1 x3+a3 ) y−( x33 +a2 x23 +a4 x3 +a6 )=0
Phương trình bậc 2 này có 2 nghiệm là:
− a x +a

y3 , y'3 = (

1

3

Δ

3

±

) √


2×1

'

Cộng 2 nghiệm này ta sẽ có y 3 + y3=−a1 x3−a3, mặt khác do y '3 nằm trên
đường thẳng P1 ,P2 nên y'3= λx3 + μ. Từ đây có thể tính được y3 theo cơng
thức:
y3=− λ x3 −μ−a1 x3−a3

Thay µ từ (1.9) ta có thể tính y3 dưới dạng sau:
y

3=

λ (x1 −x3 )− y1−a1 x3−a3

2.1.2.2 Trường hợp 2 điểm trùng nhau P1=P2
Khi này x1=x2 và y1= y2 do đó cơng thức tính λ ở (1.9) khơng sử dụng
được vì xuất hiện phép chia số 0. Trong trường hợp này λ chính là hệ số
góc của đường thẳng tiếp tuyến đường cong E tại P1 hay P2. Hệ số góc
21

TIEU LUAN MOI download : moi nhat


dy
của tiếp tuyến của E chính là đạo hàm
dx , sử dụng các quy tắc lấy
đạo hàm của tích, đạo hàm của hàm số hợp và lấy đạo hàm 2 vế của

phương trình (1.2) theo dxta có:
3

2

d ( x + a2 x +a4 x

+a6

) dx

2

3 x +2 a2 x +a4
2

3 x +2 a2 x +a4

2y

dy

(

2

3 x +2 a2 x +a4

)


dy
dx + a1 y +x
dx
dy
+a3
dx (2 y +a1
dy
x+a3 )
dx dy dx

3 x2+2 a2 x +a4−a1 y
3 x2 +2 a2 x+a4 −a1
y 2 y +a1 x +a3

Như vậy với điểm P1=( x1 , y1 ) ta có:
3 x2
λ=

+
+ −
2ax a ay

1

2

1

4


1

1

Trong tất cả các trường hợp điểm P3 là tổng của 2 điểm P1 ,P2sẽ là điểm
có tọa độ là:
P3 ( x3 , y3 )=¿)
Với đường cong E dạng (1.1), khi đó a1=a3 =a2=0 và P3 sẽ được tính theo
cơng thức:
P3 ( x3 , y3 )=¿)
Trong trường hợp P1=P2, (1.18) sẽ được biến đổi thành:
3 x2

λ=

+

1

a
4

2.1.3 Nhân vô hướng các điểm trên đường cong Elliptic
Với n ∈ N ∖{0}định nghĩa phép nhân vô hướng của điểm P nằm trên đường
cong E là phép cộng n lần chính bản thân điểm P:
P ↦nP=P+ P+⋯+P=Q
nlần

Để tối ưu phép nhân vơ hướng, có thể sử dụng phương pháp Nhân đôivàcộng, đầu tiên biểu diễn số n dưới dạng n=n0 +2 n1 +22 n2+⋯+2m nm với
[


n0 …
nm ]∈
{0,1 },

sau đó
áp dụng
thuật
tốn: 22


TIEU LUAN MOI download : moi nhat


×