You are on page 1of 52

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ


KHOA: AN TOÀN THÔNG TIN

Mật mã ứng dụng trong an toàn thông tin

ĐỀ TÀI 05

Mật mã trên đường cong Elliptic


Giảng viên: Thầy Lục Như Quỳnh
Sinh viên thực hiện: Nguyễn Tùng Anh - AT140102
Nguyễn Hữu Hoàng – AT140523
Nguyễn Văn Chung - AT140504
Hoàng Nguyên Thái – AT140340
Ngô Nguyễn Quỳnh Hương – AT140815
Đoàn Văn Quỳnh – AT130843
Nguyễn Thành Hiếu – AT140419
Phạm Thành Trung Hiếu – AT140420
Đào Thành Đạt – AT140306
Nguyễn Thế Bắc – AT140103
MỤC LỤC
Danh mục hình ảnh...............................................................................................4
Chương 1: Hệ mật mã khóa công khai.................................................................5
1.1 Giới thiệu....................................................................................................5
1.2 Lý thuyết số................................................................................................8
1.2.1 Một số khái niệm.................................................................................8
1.2.2 Định lý Fermat...................................................................................10
1.2.3 Phép logarit rời rạc............................................................................11
1.3 Bảo mật, Chứng thực và Chống chối bỏ...................................................12
1.4 Trao đổi khóa............................................................................................13
1.4.1 Trao đổi khóa công khai....................................................................13
1.4.2 Dùng mã hóa công khai để trao đổi khóa bí mật...............................15
1.5 Phương pháp trao đổi khóa Diffie - Hellman...........................................15
Chương 2: Hệ mật đường cong Elliptic..............................................................18
2.1 Đường cong Elliptic..................................................................................18
2.1.1 Định nghĩa.........................................................................................18
2.1.2 Cộng các điểm trên đường cong Elliptic...........................................19
2.1.2.1 Trường hợp 2 điểm không trùng nhau P 1≠ P 2...........................21
2.1.2.2 Trường hợp 2 điểm trùng nhau P 1=P 2......................................21
2.1.3 Nhân vô hướng các điểm trên đường cong Elliptic...........................22
2.1.4 Nhóm (+) của các điểm trên đường cong Elliptic.............................24
2.1.5 Đường cong Elliptic trên trường hữu hạn F q ....................................27
2.1.5.1 Trường hữu hạn F q .....................................................................27
2.1.5.2 Tổng số điểm của đường cong Elliptic trên trường hữu hạn Fq.29
2.2 Mật mã trên đường cong Elliptic..............................................................32
2.2.1 Thiết lập cơ sở...................................................................................32
2.2.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic..................32
Bài toán lô-ga-rít rời rạc trên đường cong Elliptic (ECDLP).................33
2.2.2 Trao đổi khóa.....................................................................................33
2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH........................................33
2
2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV...............................................34
2.2.3 Mã hóa - Giải mã...............................................................................35
2.2.3.1 Mã hóa Massey-Omura...............................................................35
2.2.3.2 Mã hóa ElGamal.........................................................................36
2.2.3.3 Mã hóa ECIES............................................................................36
2.2.4 Các hệ chữ ký trên đường cong Elliptic:...........................................38
2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic...............................................38
2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA)............................................38
2.3 Nhúng số vào điểm trên đường cong Elliptic...........................................39
2.3.1 Chuyển thông báo thành số nguyên thuộc Fp.....................................39
2.3.2 Nhúng bản rõ.....................................................................................40
2.4 Độ an toàn của hệ mật trên đường cong Elliptic......................................41
Bài tập về nhà.....................................................................................................43
Tài liệu tham khảo..............................................................................................52

3
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
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 e K 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 quá trình giải mã hoàn toàn tương tự với quá 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 toà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 toà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
Để 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 toà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 toà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
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 hoàn toà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ố nguyên 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 toá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 toà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 toán NP
đầy đủ).
● Hệ mật ElGamal: Dựa trên tính khó giải của toá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 toà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 toán của
các hệ mật này.
7
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 toá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
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…,n-
1}. 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ố nguyên, phép modulo có các tính chất:
(a + b) mod n = [(a mod n) + (b mod n)] mod n
(a - b) mod n = [(a mod n) - (b mod n)] mod n
(a 𝗑 b) mod n = [(a mod n) 𝗑 (b mod n)] mod n
Ước số
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ó, ngoà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
Hai số nguyên a, b được gọi là nguyên tố cùng nhau nếu UCLN của a và
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.
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ố nguyên tố cùng nhau, do đó tìm được a -1 = 3
(21 ≡ 1 mod 10)

9
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 toá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, p k 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ố nguyên 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ì a p-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 ≠ j) sao cho: ia mod p =
ja mod p. Vì a nguyên tố cùng nhau với p nên tồn tại a -1 trong phép
modulo p. Do đó nếu ia ≡ ja mod p thì iaa-1 ≡ jaa-1 mod p nghĩa là i
≡ j mod p. Điều này trái với giả thiết i ≠ j.
Từ hai nhận xét trên ta suy ra các phần tử của X sẽ là một hoán vị các giá
trị {1, 2, 3…, p-1}. Do đó:
a 𝗑 2a 𝗑 …(p-1)a ≡ [1 𝗑 2 𝗑 … (p-1)] mod n
 a 𝗑 a 𝗑 … 𝗑 a = ap-1 ≡ 1 mod n (ĐPCM)
Sau đây là một sốt ví dụ của Fermat
p = 5, a = 74 => 49.49 = 2401, 2401 ≡ 1 mod 5
p = 7, a = 46 => 64.64 = 4096, 4096 ≡ 1 mod 5
10
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
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 KSA, 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
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ể thoá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
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 K PA
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
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 toá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ã K S 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 ngoài
Alice chỉ có Bob mới biết được KS. Nhờ tính chống chối bỏ, Bob biết rằng
ngoà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
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 gb 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ị gab 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 g ac mod p sau đó mã hóa lại bằng g bc
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 toàn, quá 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
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 KS. Và từ đó Charlie có thể khôi phục lại các bản
rõ mà được mã hóa bằng K S 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ả g a 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 gab 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
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 y 2=x 3 + 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 luôn luôn có điểm ∞ được định nghĩa :
E ( L )= {∞ } ∪ {( x , y ) ∈ Lx L| y 2=x 3 + 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 y 2=x 3−x có 3 nghiệm thực khác nhau, còn đường cong
y 2=x 3 + 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 A 3 +27 B 2 ≠ 0.
Nếu đường bậc 3 có các nghiệm r 1, r2, r3 thì có thể chứng minh rằng biệt
2 3 2
thức của đường cong này là ( ( r 1−r 2 ) ( r 1−r 3 )( r 2−r 3 ) ) =−( 4 A +27 B ).

a. y 2=x 3−x b. y 2=x 3 + 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 quát của phương trình
Weierstrass của đường cong Elliptic được biểu diễn như sau:

18
y 2 +a1 xy +a3 y=x 3 +a2 x 2+ 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:
2
a1 x a3 2 3 a21 a1 a3 a23
( y+
2
+
2) (
=x + a2 +
4 ) (
x + a4+
4 ) (
x + + a6
4 )
Hay có thể viết nó như sau
y 21=x 3 +a'2 x 2 ⊢ a'4 x+ a'6
a x a
Với y 1= y + 1 + 3 và các hằng số a '2 , a'4 ,a '6. Khi K có đặc số bằng 3 hay khác
2 2
a
3 ta có thể dùng phép thế x 1=x + 2 và ta có:
3
2 3
y 1=x 1 + 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 toán, xem nó là ký
hiệu hình thức thỏa mãn những quy tắc tính toá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=( x 1 , y1 ) và P2=( x 2 , y 2) trên đường cong Elliptic E
y 2 +a1 xy +a3 y=x 3 +a2 x 2+ a4 x+ a6

19
Phép cộng giữa hai điểm trên đường cong E được định nghĩa như sau:
P3 ( x3 , y 3 )=P1 ( x 1 , y 1 ) + P2 ( x2 , y 2 )
Trong đó P3 ( x3 , y 3 )=−P '3 ( x 3 , y '3) , điểm P'3 ( x 3 , 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 , y 3 )và −P'3 ( x 3 , y '3 )đều nằm
trên đường cong E nên ( x 3 , y 3 )và ( x 3 , y '3) phải thỏa mãn phương trình (1.2).
Công thức để tính các giá trị ( x 3 , y 3 )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ị ( x 3 , y 3 ), 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ó:
y 1=λ x 1 + μ
y 2=λ x 2 + μ
20
y '3= λ x 3 + μ

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: y 1− y 2=x ( x 1−x 2 ), khi P1 ≠ P2, nghĩa là x 1 ≠ x 2ta có
công thức:
y 1− y 2
λ=
x 1−x 2
y 1− y 2 x y −x y
μ= y 1−λ x 1= y 1− × x 1= 1 2 2 1
x 1−x 2 x 1−x 2
Tiếp theo thay y ở (1.4) vào phương trình (1.2) ta có:
( λx + μ )2 + ( a1 x+ a3 ) ( λx+ μ )=x 3+ a2 x2 +a 4 x+ a6
Từ đó dẫn đến phương trình r ( x )=0 với:
r ( x )=x 3+ ( a2 −λ2−a1 λ ) x2 + ( a4 −2 λμ−a 3 λ−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−x 1 ) ( x−x 2 )( x −x3 )
¿ ( x 2−( x1 + x 2 ) x + x 1 x 2 ) ( x−x 3 )
¿ x 3−( x 1 + x2 ) x 2+ x1 x 2 x−x 3 x 2 + ( x 1+ x12 ) x 3−x 1 x 2 x 3
¿ x 3−( x 1 + x2 + x 3 ) x 2+ ( x 1 x2 + x 1 x 3 + x 2 x 3 ) x−x 1 x 2 x 3
Đồng nhất các hệ số x2 của r(x) ở 2 phương trình (*) và (**) ta có:
x 1+ x2 + x 3=−( a2− λ2−a 1 λ ) từ đây có thể tính được x 3 theo công thức sau:
x 3=λ 2+ a1 λ−a 2−x 1−x 2
Đến đây cần phải tính tiếp giá trị y 3, 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:
y 2 + ( a 1 x 3+ a3 ) y−( x33 + a2 x 23 +a 4 x 3 +a6 ) =0
Phương trình bậc 2 này có 2 nghiệm là:
' − ( a1 x3 +a 3 ) ± √ Δ
y 3 , y3 =
2×1
Cộng 2 nghiệm này ta sẽ có y '3 + y 3=−a1 x 3−a3, mặt khác do y '3 nằm trên
đường thẳng P1 , P2 nên y '3= λ x 3 + μ. Từ đây có thể tính được y 3 theo công
thức:
y 3=− λ x3 −μ−a 1 x 3−a 3
Thay µ từ (1.9) ta có thể tính y3 dưới dạng sau:
y 3= λ ( x1 −x3 ) − y 1−a 1 x 3−a3

2.1.2.2 Trường hợp 2 điểm trùng nhau P1=P2


Khi này x 1=x 2  và  y 1= y 2 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ố

21
góc của đường thẳng tiếp tuyến đường cong E tại P1 hay P2. Hệ số góc
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 dx ta có:
d ( y 2+ a1 xy + a3 y ) d ( x3 + a2 x 2 +a 4 x +a 6 )
¿
dx dx
d( y )2
d ( a1 xy ) d ( a3 y )
+ + ¿ 3 x 2+2 a 2 x +a4
dx dx dx
2
d ( y ) dy d ( xy) dy
dy
× + a1
dx ( dx ) + a3
dx
¿ 3 x 2+2 a 2 x +a4

dy dy dy
dx (
2 y + a1 y + x
dx) + a3
dx
¿ 3 x 2+2 a 2 x +a4
dy
( 2 y +a1 x+ a3 ) dx ¿ 3 x 2+2 a 2 x +a4 −a1 y
dy 3 x 2 +2 a2 x+ a4 −a1 y
dx ¿
2 y + a1 x +a3

Như vậy với điểm P1=( x 1 , y1 ) ta có:


3 x 21 +2 a2 x 1 +a 4−a1 y 1
λ=
2 y 1 +a 1 x 1+ a3
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 , y 3 )=¿ )
Với đường cong E dạng (1.1), khi đó a 1=a3=a2=0 và P3 sẽ được tính
theo công thức:
P3 ( x3 , y 3 )=¿ )
Trong trường hợp P1=P2, (1.18) sẽ được biến đổi thành:
3 x 21 +a 4
λ=
2 y1

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
n lần

Để tối ưu phép nhân vô hướng, có thể sử dụng phương pháp Nhân đôi-
vàcộng, đầu tiên biểu diễn số n dưới dạng n=n0 +2 n1 +22 n2+ ⋯+2m n m với
[ n0 … nm ] ∈ {0,1 }, sau đó áp dụng thuật toán:

22
Thuâ ̣t toán 1.1 Phương pháp Nhân đôi và cô ̣ng
1: Q ← 0
2: for I = 0 to m do
3: if ni = 1 then
4: Q ← Cô ̣ngĐiểm(Q,P)
5: end if
6: P ← NhânĐôi(P)
7: end for
8: return Q
Ngoài phương pháp Nhân đôi-và-cộng, có thể sử dụng phương pháp Trượt-
cửa sổ. Các phương pháp này cho phép nhân vô hướng một cách tối ưu.
Lưu ý của người viết:
• Không tồn tại phép nhân 2 điểm trên đường cong E, có nghĩa là
không tồn tại P × Q với P, Q ∈ E.
• Không tồn tại thuật toán chia vô hướng Q : n. Biết rằng Q = nP, bài
toán tìm số n là bài toán Logarithm rời rạc sẽ được đề cập tới ở chương
sau. Đây là bài toán khó, thông thường phải thử lần lượt n = 1, 2, . . . ,
n − 1 phép cộng điểm P, cho đến khi tổng bằng Q, tuy nhiên có một số
thuật toán tối ưu hơn để tìm n nhưng vẫn không thể giải được bài toán
này trong thời gian đa thức vì thế dựa vào độ khó này có thể xây dựng
ra hệ mật đường cong Elliptic với các giao thức cho mã hóa, xác thực
và trao đổi khóa.

Hình 12 Ví dụ về tính chất kết hợp trên đường cong Elliptic

23
2.1.4 Nhóm (+) của các điểm trên đường cong Elliptic

Xét đường cong Elliptic E được định nghĩa bởi phương trình y 2 = x3 + Ax +
B. Xét 3 điểm nằm trên đường cong E là P1, P2, P3 lần lượt có các tọa độ là
(x1, y1), (x2, y2), (x3, y3).
Để các điểm trên đường cong Elliptic tạo thành nhóm (+), “điểm vô cùng”
(∞) sẽ được thêm vào đường cong, kí hiệu là O, điểm này sẽ nằm ở trên
cùng và dưới cùng của trục y. Một trong những thuộc tính quan trọng nhất
của đường cong Elliptic là tồn tại nhóm các điểm với phép cộng nằm trên
đường cong.
Định lý 1.5.1. Phép cộng với các điểm P, P1, P2, P3 trên đường cong E thỏa
mãn các tính chất của nhóm:
1. (Giao hoán): P1 + P2 = P2 + P1;
2. (Điểm đơn vị): P + ∞ = P;
3. (Điểm nghịch đảo): Tồn tại P’ của P sao cho P + P’ = ∞;
4. (Kết hợp): (P1 + P2 ) + P3 = P1 + (P2 + P3 ).
Chứng minh.
1. Tính chất giao hoán: của phép cộng 2 điểm P1 , P2 là hiển nhiên từ công
thức tính tọa độ của điểm tổng, các giá trị có giao hoán thì giá trị tính bởi
công thức này cũng không thay đổi, hoặc về mặt hình học đường thẳng
đi qua P1 , P2 dù có xuất phát từ P1 hay P2 thì đều như nhau và cùng cắt
đường cong E tại một điểm chung duy nhất.
2. Điểm đơn vị: không cần phải chứng minh vì nó xuất phát từ định nghĩa.
Có thể lý giải rõ hơn về điểm (∞) và cách định nghĩa phép cộng trên E
như sau: Khi đường cong E không suy biến, nó sẽ cắt một đường thẳng
được định nghĩa bởi phương trình (1.4) ở 3 điểm, thực vậy theo các phép
biến đổi phương trình (1.11) r(x) sẽ có 3 nghiệm phân biệt. Mặt khác E
đối xứng qua trục x do phương trình (1.1) có thành phần y2 nên luôn tồn
tại hai giá trị y, −y thỏa mãn (1.1), cũng do tính đối xứng này nên đường
cong E sẽ cắt các đường thẳng song song với với trục y ở 2 điểm, vì nếu
cắt thêm 1 điểm nữa thì sẽ phải cắt thành 4 điểm do tính đối xứng, điều
này là mẫu thuẫn vì phương trình bậc 3 chỉ có tối đa 3 nghiệm. Ở trường
hợp này nếu cộng 2 điểm nằm trên đường song song trục y sẽ không tìm
được điểm thứ 3 do vậy P1 + P2 sẽ không tồn tại. Chính vì để nhóm các
điểm trên E có tính đóng bắt buộc chúng ta phải định nghĩa thêm điểm ∞
coi như là điểm thứ 3 nằm trên đường cong E, và nó sẽ nằm ở vô cực ở 2
đầu trục y.

24
3. Tiếp theo, có thể lý giải về phép định nghĩa phép cộng 2 điểm trên E như
sau. Để thỏa mãn tính chất tồn tại điểm đơn vị theo định nghĩa về nhóm
G với mọi giá trị a ∈ G tồn tại e ∈ G sao cho
a • e=e • a=a (1.22)
4. Xét điểm P trên đường cong E, khi đó cần tính P + ∞, dễ thấy điểm này
chắc chắn phải nằm trên cùng đường thẳng song song trục y vì nếu
không sẽ cắt E ở 2 điểm nữa cùng với ∞ tạo thành 4 điểm và điều này là
phi lý. Nếu đã nằm trên đường song song y thì nó sẽ cắt E ở điểm đối
xứng qua trục x, nếu coi điểm cắt này là tổng P + ∞thì như vậy sẽ tồn tại
P + ∞ = P’ và điều kiện (1.22) sẽ không được thỏa mãn. Vì vậy sẽ phải
định nghĩa điểm tổng không phải là giao trực tiếp với E mà phải lấy là
điểm đối xứng để đối xứng của điểm đối xứng sẽ quay lại chính P và ta
có P + ∞ = P.
5. Điểm nghịch đảo: Cũng từ nhận xét rằng luôn tồn tại 2 điểm P, P’ nằm
trên cùng đường thằng song song với trục y và sẽ cắt đường cong E ở
điểm ∞, coi 2 điểm này là nghịch đảo của nhau và sẽ luôn có: P + P’ =
∞.
6. Tính chất kết hợp: Chứng minh (P1 + P2 ) + P3 = P1 + (P2 + P3 ) khác
hẳn với 3 điều kiện khác về nhóm, và nó đặc biệt phức tạp. Có 2 cách
chứng minh điều này là dùng phương pháp hình học hoặc đại số. Dưới
đây là một số điểm được sử dụng để chứng minh bằng phương pháp đại
số. Trước tiên tính các điểm tổng sau:
P12 = P1 + P2
P32 = P3 + P2
P123 = (P1 + P2) + P3 = P12 + P3
P321 = (P3 + P2) + P1 = P32 + P1
Từ các công thức tính giá trị tọa độ (x, y) của điểm tổng, có thể dễ dàng
biến đổi tính điểm:
( y 2− y 1 )
λ 12 ¿
( x 2−x 1 )
( y 2− y 3 )
λ 32 ¿
( x 2−x 3 )
2
2 ( y 2 − y1 )
x 12 ¿ λ 12−x 1−x 2= 2
−x 1−x 2
( x 2−x 1 )
y 12 ¿ λ 12 ( x 1−x 12) − y 1=−λ 312+ ( 2 x 1+ x 2 ) λ12− y 1
−( y 2− y 1 )3 ( 2 x 1+ x2 ) ( y 2− y1 )
¿ + − y1
( x 2−x 1 )
3
x2 −x1

25
2
2 ( y 2− y 3 )
x 32 ¿ 32 λ −x 3−x 2= 2
−x 3− x2
( x2−x 3 )
y 32 ¿ λ 32 ( x 3−x 32) − y 3=−λ 332+ ( 2 x 3 + x 2) λ 32− y 3
− ( y 2 − y 3 )3 ( 2 x 3 + x 2 ) ( y 2 − y 3 )
¿ + − y3
( x 2−x 3 )
3
x 2−x 3
( y 12− y 3 )
λ 123 ¿
( x 12−x 3)
( y 32− y 1 )
λ 321 ¿
( x 32−x 1)
Cuối cùng cách tính tọa độ của các điểm P123 , P321 theo tọa độ 3 điểm
P1 ( x1 , y 1 ) , P2 ( x 2 , y 2 ) , P3 ( x 3 , y 3 )được biểu diễn dưới các dạng công thức
3 2
− ( y 2− y 1 ) ( 2 x 1 + x 2) ( y 2 − y 1 )

x 123 ¿
( ( x 2−x 1 )
3
+
x 2−x 1
− y 1− y 3
)
2 2
( y 2− y 1 )
(
( x 2−x 1)
2
−x1 −x2 −x3
)
− ( y 2 − y 1 )2
2
+ x1 + x 2−x 3
( x 2−x 1 )
3 3
− ( y 2− y 1 ) ( 2 x 1 + x 2) ( y 2 − y 1 )

y 123 ¿
( ( x 2−x 1 )
3
+
x 2−x 1
− y 1− y 3
)
2 3
( y 2− y 1 )
( ( x 2−x 1)
2
2
−x1 −x2 −x3
) 3
2 ( y 2− y 1 ) − ( y 2− y 1 ) ( 2 x 1+ x2 ) ( y 2− y 1)
+
( ( x 2−x 1 )
2
−2 x 1−2 x 2+ x3
)( 3
( x 2−x 1 )
2
+
x2 −x1
− y 1− y 3
)
( y 2− y 1 )
2
−x1−x 2−x 3
( x 2−x1 )
+ ( y 2− y 1 )3 ( 2 x 1 + x 2 )( y 2− y 1 )
− + y1
( x 2−x 1 )
3
x 2−x 1
3 2
−( y 2− y 3 ) ( 2 x 3 + x 2 )( y 2− y 3 )

x 321 ¿
( ( x 2−x 3 )
3
+
x 2−x 3
− y 3− y 1
)
2 2
( y 2− y 3 )
( ( x 2−x 3 )
2
−x 3−x 2−x 1
)
− ( y 2 − y 3 )2
2
+ x3 + x 2−x 1
( x 2−x 3 )

26
3 3
− ( y 2− y 3 ) ( 2 x 3 + x 2 )( y 2− y 3 )

y 321 ¿
( ( x 2−x 3 )
3
+
x 2−x 3
− y 3− y 1
)
2 3
( y 2− y 3 )
( ( x 2−x 3 )
2
2
−x 3−x 2−x 1
) 3
2 ( y 2− y 3 ) − ( y 2− y 3 ) ( 2 x 3 + x 2 )( y 2− y 3 )
+
( ( x 2−x 3 )
2
−2 x3 −2 x 2 + x 1
)( ( x 2−x 3 )
2
3
+
x 2−x 3
− y 3− y 1
)
( y 2− y 3 )
2
−x 3−x 2−x 1
( x 2−x 3 )
+ ( y 2 − y 3 )3 ( 2 x 3 + x 2 ) ( y 2− y 3 )
− + y3
( x 2−x 3 )
3
x 2−x 3

Cần phải chứng minh rằng P123 = P321 điều này có nghĩa cần phải chứng
minh:
dx = x123 − x321 = 0 (*)
dy = y123 − y321 = 0 (**)
Triển khai vế trái của (*), sẽ được một phân số mà tử số và mẫu số bao
gồm tổng cộng 1446 thành phần, tương tự vế trái của (**) có tất cả
10081 thành phần có dạng n k x i1 x i2 x i3 y1j y 2j y 3j , trong đó số mũ 1 2 3 1 2 3

i 1 , i 2 , i 3 , j 1 , j 2 , j 3 nằm trong khoảng [0..12] và n klà hệ số của thành phần


biểu thức trên.

2.1.5 Đường cong Elliptic trên trường hữu hạn F q


2.1.5.1 Trường hữu hạn F q
Các ứng dụng về mật mã của đường cong Elliptic đa số chỉ sử dụng các
đường cong trên trường hữu hạn.
Xét F qlà một trường hữu hạn (hữu hạn số phần tử số nguyên dương):
F q= {0, 1, 2 . . . , q − 1}
q là một số nguyên tố hoặc có dạng q = pm với p là một số nguyên tố và
m là một số nguyên dương. Khi này p được gọi là đặc số char(q) = p và
m là bậc mở rộng của F q.
Trong thực tế và đặc biệt trong các thiết bị phần cứng [18], người ta
thường sử dụng trường hữu hạn F 2 . Khi đó phép cộng trong trường nàym

đơn giản chỉ là phép toán XOR (Exclusive OR). Nhiều tài liệu cho thấy
làm việc với F 2 hiệu quả hơn 40% so với làm việc với trường F q. Nhóm
m

thực hiện Đề tài cấp Nhà nước KC01.18 do người viết làm hủ nhiệm đề
tài đã cài đặt toàn bộ các phép toán về đường cong Elliptic trên trường
27
F 2 cho Chip Spartan 6 của Xilinx cho bài toán xác thực và trao đổi khóa
m

phiên trong thiết bị VPN IPSec.


Trường F 2 thường được biểu diễn dưới dạng tổ hợp tuyến tính của các
m

vector gồm m phần tử {α0 , α1 , . . . , αm−1 }, mọi phần tử α ∈ F 2 đều có thể m

được biển diễn dưới dạng:


α = a0α0 + a0α0 + . . . + am−1αm−1, ai ∈ {0, 1}
Có nhiều phương pháp để xây dựng cơ sở của F 2 : đa thức cơ sở và cơ m

sở chuẩn tắc. Các thuật toán để thực hiện các phép toán trên EC có thể
tìm thấy trong [6].
Đa thức cơ sở
Xét đa thức f (x)= xm + f m−1 x m−1+ …+f 2 x 2+ f 1 x+ f (với f i ∈ F 2 ,i =¿ 0 , … , m−1)
là một đa thức bất khả quy bậc m trên trường F 2, nghĩa là không thể
phân tích f(x) thành các đa thức thừa số khác có bậc nhỏ hơn m. f(x) gọi
là đa thức rút gọn. Trường hữu hạn F 2 sẽ là tập tất cả các đa thức trên
m

F2 có bậc nhỏ hơn hoặc bằng m.


F 2 = {am−1xm−1 + . . . + a2x2 + a1x + a0 : ai ∈ {0, 1}}
m

Các phần tử (am−1xm−1 + . . . + a2x2 + a1x + a0) thường được biểu diễn
dưới dạng chuỗi bit (am−1 . . . a1a0) có độ dài là m
Các phép toán trong trường F 2 : m

 Phép cộng:
(cm−1 . . . c1c0) = (am−1 . . . a1a0) + (bm−1 . . . b1b0),ci = ai ⊕ bi.
 Phép nhân:
( r m −1 … r 1 r 0 )=( am−1 … a1 a0 ) ⋅ ( b m−1 … b1 b0 )
Trong đó
( r m−1 x m−1 +…+r 1 x+ r 0 )=( a m−1 x m−1+ …+a 1 x +a0 ) × ( bm −1 x m−1+ ... +b1 x+ b0 ) mod f (x )
Đa thức rút gọn f(x) thường có dạng sau:
 Trinomial basis (TPB):
f (x)= xm + x k +1 , 1≤ k ≤ m−1.
 Pentanomial basis (PPB):
f (x)= xm + x k + x k + x k +1 , 1≤ k 1< k 2 <k 3 ≤ m−1.
3 2 1

Cơ sở chuẩn tắc
m −1
F 2 sử dụng cơ sở có dạng { β , β2 , … , β2 }với β ∈ F 2 , khi đó mỗi phần tử
m m

m−1
i
2
a ∈ F2 m
đều có dạng a= ∑ a i β , ai ∈{0,1}và cũng được biểu diễn dưới
i=0

dạng chuỗi bit (a0a1 . . . am−1) có độ dài là m. Với cơ sở này phép bình
phương sẽ thực hiện rất đơn giản chỉ bằng cách quay bit. Các phép toán
trong trường F 2 : m

28
 Phép cộng:
(c0c1 . . . cm−1) = (a0a1 . . . am−1) + (b0b1 . . . bm−1), ci = (ai + bi) mod
2.
 Phép bình phương:
m −1 2 m−1 m −1

( )
i i+ 1 i

a 2= ∑ ai β2 =∑ ai β 2 = ∑ ai−1 β 2
i=0 i=0 i=0

¿ ( a m−1 a 0 a1 … a m−2 )
 Phép nhân:
Xét p=Tm +1 v à u∈ F p là phần tử bậc T, định nghĩa chuỗi F(1),
F(2), . . . , F(p − 1) ta sẽ có:
F ( 2i u j mod ❑ p )=i, 0 ≤i ≤ m−1,0≤ j ≤ T −1
( c 0 c 1 … cm −1 ) =( a 0 a 1 … a m−1 ) ⋅ ( b0 b1 … bm−1 )
p=2

{
∑ aF (k+1 )+l b F (p−k )+l ,
k=1
m /2
c l= ∑ ( ak+l −1 bm / 2+k+l −1 +a m/ 2+k +l−1 b k+l−1 )
k=1
p =2
+ ∑ aF (k +1)+l a F (k+1)+l ,
k=1

2.1.5.2 Tổng số điểm của đường cong Elliptic trên trường hữu hạn
Fq
E là đường cong Elliptic trên trường Fq, bởi vì cặp (x, y) với x, y ∈ Fq là
hữu hạn do đó nhóm E(Fq) cũng sẽ là nhóm hữu hạn. Các giá trị x, y là
các số nguyên, dễ dàng nhận thấy không phải với mọi giá trị x đều tìm
được giá trị nguyên y bởi vì không phải bao giờ y2 cũng là một số
nguyên dương. Câu hỏi đặt ra là số điểm của của đường cong Elliptic
trên trường Fq là bao nhiêu? Xác định số điểm trên đường cong E nhằm
xác định không gian khóa của hệ mật.
Sau đây là phần trình bày về việc tính tổng số điểm của đường cong
Elliptic trên trường hữu hạn Fq.

Bổ đề 1.
m m n n
11 12

22
11

21
12
M và N là hai ma trận 2 × 2. M = m m , N = n n , với các số
21 22
( ) ( )
nguyên a, b ta có:
det (¿ aM +bN )=a2 det(¿ M )+ b2 det(¿ N )+ab ¿ ¿ ¿ ¿ (*)
Chứng minh. Theo định nghĩa về định thức ta có:
29
det (¿ M )=m 11 m22−m21 m12 ,¿
det (¿ N )=n11 n 22−n21 n 12 ¿
a m11 + b n11 a m12 + b n12
det (¿ aM +bN ) ¿ ¿ det ( a m 21+ b n21 a m22 + b n22 )
¿ ( a m11 +bn 11 )( a m22 +b n 22) −( a m21+ b n21 )( a m12 +b n12 )
¿ a ( m 11 m 22−m 21 m 12) + b2 ( n11 n22−n21 n12 )+ ¿
2

+ab ( m11 n 22 +n 11 m22−m 21 n12−n21 m 12 )


¿ a2 det (¿ M )+b 2 det (¿ N )+ab ( m11 n22 +n11 m22−m21 n12−n 21 m12) ¿ ¿ (**)
Khi a = b = 1 áp dụng công thức ở trên ta có:
det (¿ M + N )=det (¿ M )+det (¿ N )+ ( m 11 n22+ n11 m 22−m 21 n12−n21 m 12) ¿ ¿ ¿ (***)
Nhân cả 2 vế (***) với ab sau đó trừ vào (**) sẽ được kết quả (*) là
điều cần phải chứng minh.

Định nghĩa 2. Điểm n-xoắn (Torsion): Cho đường cong Elliptic E được
định nghĩa trên trường K, cho n là số nguyên dương, tập các điểm
Torsion E[n] là tập các điểm trên đường cong có tính chất như sau:
E [n]={P ∈ E ( K̄ )∣ nP=∞ }
K̄ là đóng đại số của K.

Định nghĩa 3. Divisor: Cho đường cong Elliptic E được định nghĩa trên
trường K, với mỗi điểm P ∈ E( K̄ ) định nghĩa một ký hiệu hình thức
(formal symbol) [P], khi đó divisor D sẽ là:
D=∑ a j [ P j ] , a j ∈ Z
j

f là một hàm trên E mà khác 0, khi đó divisor của f sẽ là:


div( f )  
PE ( K )
ord P ( f )[ P ]  Div( E )

f =urP g , với r ∈ Z và g( P)≠ 0 , ∞ , u(P)=0, định nghĩa bậc của f tại P là:
ord ❑P ( f )=r

Định nghĩa 4. Cặp Weil: là một ánh xạ từ 2 điểm trong nhóm các điểm
Torsion thành giá trị bậc thứ n của đơn vị:
e n : E [n]× E [n ]→ μn , μ n={ x ∈ K̄ ∣ x n=1 }
Bổ đề 5. Với mọi tự đồng cấu bất khả tách α trên E, và với mọi S, S1, S2,
T, T1, T2 ∈ E[n] ta có:
en(α(S), α(T )) = en(S, T )deg(α)
en(T, T ) = 1
en(S1 + S2, T ) = en(S1, T )en(S2, T )

30
en(S, T1 + T2) = en(S, T1)en(S, T2)
Chứng minh có thể xem trong [7].
Giả thiết {T1, T2} là cơ sở của E[n], mỗi phần tử trong E[n]đều có thể
biểu diễn dưới dạng tổ hợp tuyến tính m1T1 + m2T2. α là một tự đồng cấu
trong E[n], n là một số nguyên không chia hết bởi char(K). Tồn tại các
số a, b, c, d ∈ Z sao cho:
Do đó mỗi tự đồng cấu α đều có thể được biểu diễn bởi ma trận 2 × 2:

Bổ đề 6. α là một tự đồng cấu trong E[n], n là một số nguyên không


chia hết bởi char(K) khi đó det(αn) ≡ deg(α) mod n.
Chứng minh. Đặt ζ = en(T1, T2), theo bổ đề 1.6.5 ta có:
ζdeg(α) = en(α(T1), α(T2)) = en(aT1 + cT2, bT1 + dT2)
= en(T1, T1)aben(T1, T2)aden(T2, T1)cben(T2, T2)cd
= ζad−bc = ζdet(αn)
Nếu α, β là 2 tự đồng cấu trên E, và a, b là các số nguyên thì tự đồng
cấu aα+bβ được định nghĩa như sau:
(aα + bβ)(P ) = aα(P ) + bβ(P )
Bổ đề 7 deg(aα + bβ) = a2 deg α + b2 deg β + ab(deg(α + β) − deg α
− deg β)
Chứng minh.
Biểu diễn các tự đồng cấu α, β bằng các ma trận αn, βn (với một số cơ sở
trong E[n]), theo đó aα + bβ sẽ được biểu diễn bằng aαn + bβn. Áp dụng
công thức (1.40) ta có:
det(aαn + bβn) = a2 det(αn) + b2 det(βn) + ab(det(αn +
βn) − det(αn) − det(βn))
Theo bổ đề 1.6.6 chúng ta sẽ có:
deg(aα + bβ) = a2 deg(α) + b2 deg(β) + ab(deg(α + β) −
deg(α) − deg(β))
Định lý 1.6.8. (Hasse) Nếu E là đường cong Elliptic trên trường F q, và #
E( F q) là tổng số điểm trên đường cong đó thì:
q + 1 − 2√ q ≤ #E( F q) ≤ q + 1 + 2√ q
Chứng minh. Trước tiên xét ánh xạ Probenius được định nghĩa như sau:
ϕ q : F q→ F q,
x ↦ xq
Có thể viết một cách khác:
φq(x, y) = (xq, yq), φq(∞) = ∞

31
Khi thay các giá trị xq, yq vào phương trình (1.1) dễ thấy (x, y) cũng nằm
trên đường cong E. Ánh xạ φq là một tự đồng cấu và có thể biểu diễn
bằng hàm đa thức hữu tỷ có bậc là q. Đạo hàm của xq là qxq−1 sẽ bằng 0
bởi vì q = 0 trong trường F q. Do đạo hàm bằng 0 nên φq là khả tách
(separable).
Bởi vì φq là tự đồng cấu trong E do đó φ2 = φq ◦ φq cũng là tự đồng cấu
và φn cũng là tự đồng cấu trong E. Phép nhân với −1 cũng là tự đồng
cấu do đó tổng φn – 1 là đồng cấu trong E.
φq là khả tách (separable) nhưng φq − 1 sẽ là bất khả tách do đó bậc của
nó sẽ bằng số phần tử của hạch φq − 1 có nghĩa là số điểm trên đường
cong E sẽ là:
#E( F q) = deg(φq − 1)
Với các số nguyên r, s, áp dụng bổ đề 1.6.7 ta có:
deg(rφq − s) = r2 deg(φq) + s2 deg(−1) + rs(deg(φq − 1) − deg(φq) −
deg(−1))
Bởi vì deg(−1) = 1 và deg(φq) = q nên:
deg(rφq − s) = r2q + s2 + rs(deg(φq − 1) − q − 1))
Đặt a = −(deg(φq − 1) − q − 1) = q + 1 − #E( F q), bởi vì vì deg(rφq −
s) ≥ 0 suy ra r2 q + s2 + rsa ≥ 0 hay với mọi r, s ta có:
r 2 r
q () ()
s
−a
s
+1≥ 0

Do đó ∆ = a2 − 4q ≤ 0 hay là ¿ a∨≤2 √ q cũng có nghĩa là


|q +1−¿ E ( F q )|≤ 2 √ q và đó là điều phải chứng minh.

2.2 Mật mã trên đường cong Elliptic


2.2.1 Thiết lập cơ sở
Alice muốn gửi một văn bản, thường được gọi là bản rõ (Plaintext), tới Bob.
Cô ấy mã hóa văn bản để thu được bản mã (Ciphertext). Để mã hóa văn
bản, Alice sử dụng một khóa mã hóa (Encryption key). Bob sử dụng một
khóa giải mã (Decryption key) để giải mã bản mã nhận được.
Có hai cách mã hóa cơ bản. Trong mật mã đối xứng (Symmetric
Encryption), khóa mã hóa và khóa giải mã là như nhau. Một dạng khác của
mã hóa là mật mã khóa công khai (Public Key Encryption), hoặc mật mã
không đối xứng (Asymmetric Encryption).

32
2.2.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic
Định nghĩa : Giả sử G là một nhóm cyclic hữu hạn có cấp n. Gọi a là phần
tử sinh của G và b là một phần tử cũng thuộc G. Khi đó Lô-ga-rít rời rạc
của b theo cơ sở a trên G, được ký hiệu là log ab, là một số nguyên duy
nhất x với 0 £ x £ n - 1 sao cho b = ax.
Trên mọi cấu trúc nhóm cyclic nếu biết trước a và x mà cần tính b = ax thì
đây là một việc dễ và được thực hiện trong thời gian đa thức. Ngược lại biết
a, b mà tính x thì đây là một việc nói chung là khó và được thực hiện trong
thời gian hàm mũ.
Độ khó của bài toán Lô-ga-rít cũng phụ thuộc vào cấu trúc đại số mà trên đó
nó được xác định.
Giả sử P là một điểm có bậc hữu hạn trên đường cong elliptic, khi đó tập
<kP: kÎZ> với phép công điểm là nhóm cyclic với P là phần tử sinh. Người
ta chứng minh được rằng, nếu số điểm trên đường cong elliptic là số nguyên
tố N thì mọi điểm P trên nó đều là phần tử sinh của nó, nghĩa là P có bậc N.

Bài toán lô-ga-rít rời rạc trên đường cong Elliptic (ECDLP)
Cho trước một đường cong Elliptic E xác định trên trường hữu hạn
GF(q). Giả sử P là một điểm có bậc n và Q là một điểm của E. Hãy xác
định số nguyên k, 0 £ k £ n - 1 sao cho Q = kP nếu số nguyên k như
vậy tồn tại.
Còn hai bài toán liên quan nữa là bài toán Diffie-Hellman Elliptic
( ECDHP) và bài toán quyết định Diffie-Hellman Elliptic (ECDDHP).
Bài toán ECDHP:
Cho trước các điểm P, aP và bP của E trên GF(q). Hãy tính abP.
Rõ ràng bài toán này có thể giải được nếu bài toán ECDLP là giải được.
Bài toán ECDDHP:
Cho trước P, aP và bP của E trên GF(q) và cho trước điểm Q Î E. Hãy
xác định xem Q = abP hay không?
M1:= Bài toán lô-ga-rít rời rạc trên đường cong Elliptic ( ECDLP) trên
trường hữu hạn GF(q) được sử dụng để xây dựng các thuật toán mật
mã có độ an toàn cao nhất hiện nay vì người ta chưa tìm được các thuật
toán có thời gian tiểu hàm mũ tấn công được bài toán này.

2.2.2 Trao đổi khóa

Trong các mục còn lại, chuyên đề sẽ đề cập đến một số thuật toán ứng dụng
trong trao đổi khóa, mã hóa và ký số cơ bản. Chuẩn do công ty Certicom

33
xây dựng [1] mô tả chi tiết việc triển khai ứng dụng ECC. Tác giả D.
Hankerson [2] phân tích việc triển khai ECC bằng phần mềm, trong khi đó
tác giả L. Cao [3] phân tích thực hiện các giao thức cơ bản của ECC bằng
phần cứng.

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


Năm 1998, Laurie và cộng sự đề xuất giao thức trao đổi khóa dựa trên
ECC [4]. Sau đó giao thức này đã được đưa vào các tiêu chuẩn ANSI
X9.42, ANSI X9.63 và IEEE P1363.
Hai bên A và B cần tạo khóa phiên bí mật trao đổi trong một kênh
truyền công khai, hai bên cùng thỏa thuận điểm cơ sở P trên E. Bên A
tạo khóa bí mật dA và gửi giá trị dAP cho bên B, ngược lại bên B tạo
khóa bí mật dB nhân với P sau đó gửi lại cho A. Khi đó khóa phiên của
bên A sẽ là KA = dAdBP, và của bên B sẽ là KB = dBdAP. Dễ dàng nhận
thấy KA = KB, khóa này chỉ riêng hai bên A và B có thể tính được. Xem
sơ đồ dưới đây:
Bên A Bên B
dA dAP dAP

dBP dBP dB

KA = dAdBP KB = dBdAP

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

2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV


Tên đầy đủ của giao thức là Elliptic Curve Menezes-Qu-Vanstone.
Thuật toán đã được đưa vào trong các chuẩn ANSI X9.63, IEEE 1363-
2000, và ISO/IEC 15946-3. Theo các tiêu chuẩn này điểm cơ sở được
ký hiệu là G thay vì là P như thường gặp. Lược đồ này thường được sử
dụng khi các bên A và B có cặp khóa công khai và bí mật cố định,
tương ứng là (a, aG) và (c, cG).
Bên A sinh cặp số ngẫu nhiên (b,bG) và bên B tương ứng sinh cặp số
ngẫu (d,dG), và trao đổi 2 cặp nay cho nhau giá trị bG và dG. Kí hiệu
hàm x:EN, lấy giá trị x của một điểm trên đường cong E.
34
Thuật toán: Tạo khóa bí mật chia sẻ ECMQV
INPUT: Các tham số của hệ mật (K, E, q, h, G), các số a, b, aG, bG,
cG, dG.
OUTPUT: Khóa bí mật chia sẻ Q (chia sẻ với với đối tượng có khóa
công khai cG).
1: n ← \log2(#k) 1/2.
2: u← (x(bG)(mod 2n) + 2n.
3: s ← b + ua((mod q).
4: v← (x(dG)(mod 2n) + 2n.
5: Q ← s(dG + v(cG)).
6: if Q = ∞ then
7: Quay lại bưóc 1.
8: end if
9: Trả về khóa Q.
Bên B có thể tính ra cùng số Q bằng cách thay (a, b, c, d) trong thuật
toán trên bằng (c, d, a, b). Bên A sẽ có các giá trị uA, vA, sA và bên B sẽ
có uB, vB , sB. Dễ dàng nhận thấy [5]:
uA = vB
uB = vA
QA = sA(dG + vA(cG)) = sA(d + vAc)G = sA(d + uBc)G = sAsBG
QB = sB(bG + vB(aG)) = sB(b + vBa)G = sB(b + uAa)G = sBsAG
QA = QB =Q
Đánh giá bảo mật: Để hack được khóa chia sẻ, Hacker cần phải tính
được các giá trị a, b, c, d, muốn vậy Hacker phải giải các bài toán
Logarithm rời rạc a = logG(aG), b = logG(bG), c = logG(cG), d =
logG(dG). Đây là các bài toán khó không thể giải được trong thời gian
đa thức.

2.2.3 Mã hóa - Giải mã

Mô hình mã hóa dữ liệu sử dụng đường cong elliptic (Elliptic Curve


Encryption Scheme - ECES) bao gồm 2 thao tác: mã hóa và giải mã.
Trước khi thực hiện việc mã hóa dữ liệu với Elliptic Curve, người gởi và
người nhận cần phải sở hữu một cặp khóa công khai – 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 curve E.
• Điểm P, P ∈ E. Điểm P có bậc n (n × P = ∞)
Quá trình tạo khóa được thực hiện như sau:
• Chọn một số nguyên bất kỳ d, d ∈ [2, n − 2]. Đây chính là khóa riêng.

35
• Tính giá trị của điểm Q = d × P ∈ E. Đây chính là khóa công khai.

2.2.3.1 Mã hóa Massey-Omura


Massey-Omura là hai tác giả đề xuất lược đồ mã hóa được mô tả trong
Patent vào năm 1986. Lược đồ mã hóa này ít được sử dụng trong thực tế
nhưng nó lại có ý nghĩa về mặt lịch sử.
Bên A Bên B
Biểu diễn thông điệp như M 󠅐∈ E (𝔽II)
Chọn mA | M1 = mAM M1
gcd(mA, N) = 1
M2 M2 = mBM1 Chọn mB | gcd(mB,
N) = 1

Tính mA-1 ∈ 𝕫N M3 = mA-1 M2 M3


M = mB-1 M3
Dễ dàng nhận thấy:
mB-1 mA-1mB mAM = M
Đánh giá bảo mật: Muốn phá khóa trong lược đồ này, Hacker phải tìm
được giá trị mA và mB để tìm các giá trị này Hacker lần lượt phải giải hai
bài toán Logarithm rời rạc mA = logMM1 và mB = log M1M2, và đây là hai
bài toán chưa giải được trong thời gian đa thức.

2.2.3.2 Mã hóa ElGamal


Trên cơ sở hệ mật ElGamal, lược đồ mã hóa được phát triển như sau:
Bên A Bên B
Thông điệp M 󠅐∈ E (𝔽II) Chọn cặp khóa (xB, YB) |
YB = xBP
Chọn k, tính M1 = kP

Tính M2 = M + M1, M2 M1, M2


kYB M = M2 - xBM1

Chứng minh tính đúng đắn của lược đồ mã hóa:


M = M2 - xBM1 = M + kYB - xBM1 = M + k(xBP) - xB(kP) = M
Đánh giá bảo mật: Để giải mã được văn bản M, Hacker buộc phải tìm
được k và xB, do đó Hacker cần phải giải 2 bài toán Logarithm rời rạc k
= logPM1 và xB = logPYB, và đây là hai bài toán khó.

36
2.2.3.3 Mã hóa ECIES
ECIES (The Elliptic Curve Integrated Encryption System) do Bellare và
Rogaway đề xuất và là một biến thể của mã hóa dùng hệ mật ElGamal,
sau đó thuật toán này được đưa vào chuẩn ANSI X9.63 và ISO/IEC
15946-3, IEEE P1363a.
Tham số D = (q, FR, S, a, b, P, n, h) được chọn tương tự như với
ECDSA. Ở đây cần lựa chọn thêm các hàm mã hóa/giải mã đối xứng ký
hiệu là eK(m) và dK(c). Trong đó m là bản rõ cần mã hóa, c là bản đã
được mã. Thuật toán mã hóa đối xứng được chọn ở đây để phục vụ quá
trình mã hóa/giải mã được dễ dàng hơn và nhanh hơn so với các thuật
toán bất đối xứng. Ngoài ra thay vì sử dụng hàm băm đơn giản, ECIES
sẽ sử dụng hai hàm băm sau:
Message authentication code MACk (c):
MAC: {0, 1}n 𝗑 {0, 1}* ⟶ {0, 1}n
Key derivation function K D(T, l):
KD: E 𝗑 N ⟶ {0, 1}*
l là độ dài khóa (k1|| k2). {0, 1} là chuỗi bit có giá trị 0, 1 có độ dài n
hoặc không xác định (*).
Người nhận có cặp khóa công khai/bí mật là (Y, x) trong đó Y = xP.
Mã hóa ECIES
INPUT: Văn bản cần mã hóa m, khóa công khai Y
OUTPUT: Văn bản đã được mã hóa (U, c, r)
1: Chọn k ∈ [1, q-1]
2: U ⟵ kP
3: T ⟵ kY
4: (k1|| k2) ⟵ KD(T, l)
5: Mã hóa văn bản, c ⟵ Ek1(m)
6: Tính giá trị MAC cho văn bản mã hóa r = MACk2 (C)
7: Trả về return (U, c, r)
Bên giải mã sẽ nhận được tập hợp (U, c, r) gồm các thành phần sau:
U cần thiết để tính khóa phiên Diffie - Hellman T.
c là bản đã được mã hóa.
r được dùng để xác thực mã văn bản.
Giải mã ECIES
INPUT: Văn bản mã hóa U, c, r, khóa bí mật x.
OUTPUT: Văn bản đã giải mã m hoặc thông báo “văn bản mã không
hợp lệ”
1: T ⟵ xU
2: (k1|| k2) ⟵ KD(T, l)
37
3: Giải mã văn bản, m ⟵ Dk1(c)
4: If r ≠ MACk2(C) then
5: Xuất thông báo “văn bản không hợp lệ”
6: End if
7: Trả về văn bản đã được giải mã m

Khóa phiên T sau khi được tính trong phần giải mã sẽ có giá trị giống
như trong phần mã hóa, thật vậy:
Đánh giá bảo mật: Để phá khóa được lược đồ này Hacker cần phải tìm
được khóa bí mật x hoặc giá trị k bằng cách giải bài toán x = logPY và k
= logPU, và đây là hai bài toán toán khó chưa giải được trong thời gian
đa thức.

2.2.4 Các hệ chữ ký trên đường cong Elliptic:

2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic


Pha chuẩn bị:
Alice chọn đường cong Elliptic E trên trường hữu hạn GF(q) sao cho
bài toán ECDLP là khó trên E. Alice chọn điểm A Î E (thường thì bậc
N của điểm A là một số nguyên tố lớn), số nguyên bí mật a và tính B =
aA. Alice cũng chọn hàm :
f : E ® Z.
Hàm f không cần có tính chất đặc biệt ngoại trừ ảnh của nó nên là lớn
và chỉ có một số nhỏ các đầu vào có thể tạo ra một đầu ra bất kỳ cho
trước. Ví dụ: Nếu xét E trên GF(p) với p nguyên tố thì có thể lấy f(x,y)
= x.
Thông tin công khai của Alice là E, GF(q), f, A và B. Alice giữ a bí
mật. Số nguyên dương N cũng không nên được công bố công khai.
Alice tạo chữ ký số:
1. Alice biểu diễn thông báo là số nguyên m. Nếu m > N thì
chọn đường cong lớn hoặc sử dụng hàm băm cho m.
2. Alice chọn số nguyên dương ngẫu nhiên k với (k,N) = 1 và
tính R = kA.
3. Alice tính s º k-1(m - af(R)) (mod N) và thông báo cùng chữ
ký là (m, R, s).
Kiểm tra chữ ký số:
1. Bob lấy thông tin công khai của Alice.
2. Bob tính V1 = f(R)B + sR và V2 = mA.
38
3. Nếu V1 = V2 thì Bob tin tưởng chữ ký là hợp lệ.
Tính đúng đắn:
Chúng ta có sk º m - af(R) (mod N) và do đó sk = m - af(R) + zN đối
với một số nguyên z nào đó. Bởi vậy skA = (m - af(R))A + zNA = (m -
af(R))A + O = (m - af(R))A. Thế thì V 1 = f(R)B + sR = f(R)aA + skA =
f(R)aA + (m - af(R)) = mA = V2.

2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA)


Chuẩn bị:
Alice muốn ký thông báo m là một số nguyên dương thì Alice chọn
đường cong Elliptic E trên trường hữu hạn GF(q) sao cho số điểm của E
trên GF(q) là fr với r là số nguyên tố lớn và f là số nguyên dương nhỏ để
cho thuật toán hiệu quả.
Alice chọn điểm cơ sở G của E trên GF(q) có bậc r. Cuối cùng Alice
chọn số nguyên dương a và tính Q = aG. Alice công bố công khai thông
tin sau đây: GF(q), E, r, G, Q.
Alice tạo chữ ký số:
1. Alice chọn số nguyên dương ngẫu nhiên k với 1 £ k < r và
tính R = kG = (x,y).
2. Alice tính s = k-1(m + ax) (mod r) và tài liệu ký là (m, R, s).
Bob kiểm tra chữ ký số:
1. Bob tính u1 = s-1m (mod r) và u2 =s-1x (mod r)
2. Bob tính V = u1G + u2Q
3. Bob tuyên bố chữ ký số hợp lệ nếu V = R.
Tính đúng đắn:
Nếu thông báo được ký đúng thì đẳng thức kiểm tra đúng:
V = u1G + u2Q = s-1mG + s-1xQ = s-1(mG + xaG) kG = R.
Sự khác nhau cơ bản của ECDSA và sơ đồ chữ ký số Elgamal Elliptic là
thủ tục kiểm tra chữ ký số. Trong sơ đồ Elgamal đẳng thức kiểm tra
f(R)B + sR = mA đòi hỏi ba phép tính với một số nguyên lần một điểm
và đây là những phần tốn kém nhất, trong khi đó ECDSA chỉ đòi hỏi hai
phép tính như vậy. Cải tiến này là nâng cao hiệu quả của ECDSA một
khi cần nhiều lần kiểm tra chữ ký số và rất có giá trị trên thực tế.

39
2.3 Nhúng số vào điểm trên đường cong Elliptic
Ta biết rằng đối với mật mã khóa công khai, nếu Alice muốn gửi một thông báo
cho Bob thì trước hết cô ấy phải chuyển nó vào một tập các số nguyên, sau đó
dùng một kiểu biến đổi nào đó để mã hóa nó.
Đối với mật mã trên đường cong elliptic, chúng ta làm việc với các dạng bao
gồm các điểm trên đường cong. Do đó vấn đề khởi đầu là nghiên cứu các
phương pháp để đưa bản rõ về dạng điểm P trên đường cong elliptic. Cần chú ý
rằng ở giai đoạn này, ta không coi việc chuyển nói trên là một phép mã hóa để
giữ bí mật.
2.3.1 Chuyển thông báo thành số nguyên thuộc Fp
Có nhiều phương pháp để thực hiện việc này. Đây là một trong những
phương pháp đó và nó được giới thiệu cũng nhằm làm rõ việc chuyển đổi
một số thành điểm trên đường cong elliptic.
Xét việc chuyển đoạn thông báo gồm 3 ký tự thành một phần tử của trường
F31013. cho (m1,m2,m3) là đơn vị thông báo như vậy, miÎZ27 (ký hiệu khoảng
cách nhận giá trị 0). Tính
x= m1.272 +m2. 27+m3.
Khi đó, xÎ Fp nếu p ≥ 26.272 +26. 27+26 = max{x : miÎZ27 , i=1..3} =
19682.
Giả sử p = 41113, và thông báo LETS GET SEAFOOD cần được chuyển
thành các phần tử của Fp. Nó được tách thành những đoạn gồm 3 ký tự. Kết
quả như sau:
Bản rõ LET SGE TSE AFO OD_
(m1,m2,m3) (12,5,20) (19,7,5) (20,19,5) (1,6,15) (15,4,0)
PM = m1.272 +m2. 27+m3 8903 14045 15098 906 11043

2.3.2 Nhúng bản rõ


Cách trực quan nhất để ánh xạ số nguyên x tới điểm P ÎE(Fp) là tìm điểm P
này có hoành độ là x. Ví dụ, với đường cong y 2 = x3+2x-1 trên F41113 và phải
nhứng từ CAT = 3(27)2+1.27+20 = 2234. Ta thấy điểm cần tìm là P =
(2234,23945) ÎE(F41113 ). Từ P, dễ dàng tìm lại CAT.
Người ta thấy có khoảng một nửa những giá trị x ÎFp là hoành độ của
những điểm trên đường cong elliptic này. Chẳng hạn, Map = 13.27 2 +
1.27+16 = 9520 không là thặng dư bậc 2 theo modulo 41113 nên không có

40
điểm nào trên đường cong nhận 9520 làm hoành độ. Cũng có khoảng một
nửa x như vậy.
Ta thử làm như sau. Khi x ÏQ p tăng dần x lên mỗi đơn vị cho đến khi được
điểm P nhận giá trị mới đó làm hoành độ. Ta có (9527) là điểm đầu tiên đạt
tiêu chuẩn đó. Thế thì MAP ↪(9527, 2121). Tuy nhiên, nếu chuyển 9527 về
cơ số 27 thì lại được 9527 = 13.27 2 + 1.27+23 = MAW. Như thế , MAP,
MAQ, MAR, …, MAW↪(9527, 2121).
Ta có thể dễ dàng làm đúng đắn điều này bằng cách sử dụng ánh xạ x↪lx
với số nguyên lớn l rồi sau đó nhúng lx. Cần phải kiểm tra rằng trường của
ta vẫn còn đủ lớn, nghĩa là max{lx} = l.19682 < p để có thể tìm lại lx duy
nhất. Khi đó ta thấy rằng x được ánh xạ tới duy nhất một điểm của E(F p)
miễn là một trong các số f(lx), f(lx+1), …, f(lx+l-1) là thặng dư bậc 2. Xác
suất để điều này thất bại, nghĩa là không tìm được duy nhất lx với x đã cho,
là 1/2l. Số nguyên l được gọi là tham số nhúng.
Ví dụ. Vẫn đường cong nói trên nhưng trên trường F 910307, và lấy l=32. Khi
đó có xấp xỉ 1 trên 5000 triệu cơ hội sao cho không có số nào trong các số
f(lx), f(lx+1), …, f(lx+31) là thặng dư bậc 2. Giả sử ta muốn nhúng YOU
HAVE TWO HOURS trên đường cong elliptic này. Bảng sau minh họa quá
trình lặp. Ta có thể thấy rằng chỉ có duy nhất một điểm đối vddieemrootj
trong các giá trị rõ x.

Bản rõ YOU HAV ETW OHU ORS


X 18651 5881 4208 11166 15184
lx=32.x 596832 188192 134656 357312 506048
-1 1 -1 -1 -1

-1 -1 1 1

-1 -1

-1 1

-1

32x+i 596837 188192 134659 357313 506049


y tương ứng 678400 655701 728528 457834 833712
41
Giả sử đã biết tham số nhúng l, ta có thể dễ dàng chuyển một điểm trên
đường cong elliptic trở về số nguyên x một cách duy nhất. Giả sử ta có điểm
P= (xp, yp) và cần tìm x. Với l đủ lớn có thể giả thiết rằng
xp = lx +m, với 0 ≤ m < l.
xp m
Khi đó =x + ,
l l
xp
và theo giả thiết nói trên thì m/l < 1. Vì thế x = ⌊ ⌋.
l
Cần chú ý rằng ta có xác suất (1/2 l) để bất đẳng thức 0 ≤ m < l là không
đúng.

2.4 Độ an toàn của hệ mật trên đường cong Elliptic


Sức mạnh ECC nằm ở sự phức tạp đối với thám mã khi mà phải xác định số
ngẫu nhiên bí mật k từ kP và P. Phương pháp nhanh nhất để giải bài toàn này là
phương pháp phân tích S – Pollard. Để pahs ECC độ phức tạp tính toán khi
dùng phương pháp S – Pollard là 3,8.10 10 MIPS – năm với kích thước khóa 150
bit (Đây là số năm cần thiết với một hệ thống tính toán có tốc độc hàng triệu
lệnh/giây). Để so sánh với phương pháp nhanh nhất phá RSA (là phương pháp
sàng trường số để phân tích hợp số n thành tích của 2 số nguyên tố p và q) ta
thấy rằng với n có kích thước 768 bit độ phức tạp tính toán là 2.10 8 MIPS –
năm, với n có kích thước là 1024 bit, độ phức tạp tính toán là 3.10 11 năm. Nếu
độ dài khóa của RSA tăng lên tới 2048 bit thì cần 3.10 20 MIPS – năm, trong khi
đó với ECC chỉ cần độ dài khóa là 235 bit đã yêu cầu tới 1,6.1028 MIPS - năm.

42
Bài tập về nhà
Bài 1: Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn
nhất của hai số a = 1573, b = 308
Thuật toán:
Cho b mod m
1. (A1, A2, A3) = (1, 0, m) (B1, B2, B3) = (0, 1, b)
2. Q = A3 div B3 B3 = A3 mod B3
3. B1 = A1 – Q*B1 B2 = A2 – Q*B2
4. (A1 A2 A3) = (B1, B2, B3)
5. If B3 = 0: gcd (b, m) = A1
Else B3 =1: gcd (b, m) = 1
b-1 mod m = B2
Bài làm
Bảng 7:
Q A1 A2 A3 B1 B2 B3
- 1 0 1573 0 1 308
5 0 1 308 1 -5 33
9 1 -5 33 -9 45 11
3 -9 45 11 27 -140 0

Bảng 3:
Q r t
- 1573 1
- 308 0
5 33 -5
9 11 45
3 0

Bài 2: Tìm số nghịch đảo (nếu có) của 30 theo môđun 101
Định nghĩa: Nếu số nguyên dương x < b thỏa mãn x*b mod m = 1 thì x là
nghịch đảo của b mod m, kí hiệu b-1 mod m.
Bài làm
Cách 1: Sử dụng thuật toán Euclide mở rộng
Tìm 30-1mod 101
Q A1 A2 A3 B1 B2 B3
- 1 0 101 0 1 30
3 0 1 30 1 -3 11
2 1 -3 11 -2 7 8
1 -2 7 8 3 -10 3
43
2 3 -10 3 -8 27 2
1 -8 27 2 11 -37 1

⇨ 30-1mod 101 = -37 = 64


⇨ 64*30 mod 101 ≡1
Cách 2:
b = 30; m = 101
⇨ Tìm x sao cho x*b = y*m + 1
Ta có:
ym+1 101 y +1 11 y+ 1
⇨ x= b
= 30 = 3y + 30 ∈ Z
11 y+ 1
o r1 = 30 (0≤ r1¿30) (*) ∈ Z
o 30r1 = 11y + 1∈ Z
30 r 1−1 8 r 1−1
⇨ y = 11 = 2r1 + 11 ∈ Z
8 r 1−1
o r2 = 11 (0≤ r2¿11) (**) ∈ Z
11r 2+1
o r1 = 8
Chọn r2 = 5 thỏa (**) → r1 = 7 thỏa (*) → y = 2r1 + r2 = 19
⇨ x = 3y + r1 = 3.19 + 7 = 64

Bài 3: Tìm phần tử nghịch đảo của 3 trong Z*31 .


Giả sử b là nghịch đảo của 3 trong Z*31
 3.b ≡ 1 mod 31
 3.b mod 31 ≡ 1
 b = 3-1 mod 31
Áp dụng thuật toán Euclide mở rộng tính:
b = 3-1 mod 31
i ri qi xi yi
-1 31 1 0
0 3 0 1
1 1 10 1 -10
2 0 3

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


Nghịch đảo của 3 trong Z*31 là: 21

44
Bài 4: Tìm khóa bí mật của hệ mật RSA với p=61, q=29 biết khóa
công khai e=19. Tính bản mã của bản rõ m=37 và tiến hành giải mã
ngược lại để kiểm tra lại kết quả
1. Tính khóa bí mật
Trong hệ mật RSA ta có:
n = p.q = 61.29 = 1769
 Φ(n) = Φ(p.q) = Φ(p).Φ(q)
 Φ(1769) = 60.28 = 1680
 Sô mũ giải mã:
d = e-1 mod Φ(n) = 19-1 mod 1680
Sử dụng thuật toán Euclide mở rộng tính 19-1 mod 1680
Q A1 A2 A3 B1 B2 B3
- 1 0 1680 0 1 19
88 0 1 19 1 -88 8
2 1 -88 8 -2 177 3
2 -2 177 3 5 -422 2
1 5 -422 2 -7 619 1

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


2. Mã hóa bản tin với m = 37
Trong hệ mật RSA, ta có bản mã:
c = me mod n = 3719 mod 1769
Áp dụng thuật toán nhân bình phương có lặp ta tính:
c = 3719 mod 1769
19 = 10011 = 20 + 21 + 24
 t=4
i 0 1 2 3 4
ki 1 1 0 0 1
A 37 1369 790 1412 81
b 37 1121 1121 1121 582

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


3. Giải mã
Để giải mã, ta tìm:
m = cd mod n
 m = 582619 mod 1769
619 = 1001101011 = 20 + 21 + 23 + 25 + 26 + 29
 t=9

45
i 0 1 2 3 4 5 6 7 8 9
ki 1 1 0 1 0 1 1 0 0 1
A 582 845 1118 1010 1156 741 691 1620 973 314
b 582 8 8 1004 1004 984 648 648 648 37

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


m = 582619 mod 1769 = 37

Bài 5: Tính JACOBI (158, 235)


m1 m
Tính chất (1): m1 ≡ m2 mod n -> ( ) ≡ ( 2)
n n

2
Tính chất (2): ( n ) =
Tính chất (3):
m1 . m 2 m m 2 k t
( ) = ( 1 ) . ( 2 ) hoặc m = 2k .t ⇒ ( ) .( n )
n n n n

Tính chất (4):

m
(n) =

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

Bài làm
(3 ) (2 ) (4)
158 2 79 235 (1) 77 (4) 79 (1 ) 2 (2 )
) =( ) .( ) = (−1) .−( ) = ( ) = ( ) = ( ) = −¿1

(
235 235 235 79 79 77 77

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

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

Bài 7: Tìm r với r2 ≡ 5 (mod 41)


p là số nguyên tố ⇒ Ф(p) = p - 1
⇒Φ(p) = 41 –1 = 40
Áp dụng định lý nếu α € Z*41 là phần tử sinh khi đó β = αi mod n là phần
tử sinh khi và chỉ khi gcd(i, Φ(p)) = 1
⇒ Z*41 = {1, 3, 7, 9, 11, 13, 17, 21, 23, 27, 29, 31, 33, 37, 39}
Căn bậc hai của r2 ≡ 5 mod 41:
47
⇒r = 13 vì 132 = 169 ≡ 5 mod 41

Bài 8: Cho đường cong E={(x,y) :y2=x3+x+ 6 mod 11}


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

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


(2, 4) (2, 7) (3, 5) (3, 6) (5, 2) (5, 9) (7, 2)
(7, 9) (8, 3) (8, 8) (10, 2) (10, 9) ∞

48
Tính giá trị kα và xác định kP từ kS
EC: y2 = x3 + x + 6 mod 11
Tìm tất cả điểm của đường cong, ta có:
 x = 0 → y = √ 03 +0+6 = √ 6 (loại)
 x = 1 → y = √ 13+ 1+ 6 = √ 8 (loại)
 x=2
o y = √ 23 +2+6 = 4 mod 11
o vậy P1 (2, 4) → P2(2, -4) → P2(2, 7)
 x=3
o y = √ 33 +3+6 = 6 mod 11
o vậy P3 (3, 6) → P4(3, -6) → P4(3, 7)
 x = 4 → y = √ 4 3 +4 +6 = √ 8 (loại)
 x=5
o y = √ 53 +5+6 = 2 mod 11
o vậy P5 (5, 2) → P5(5, -2) → P6(5, 9)
 x = 6 → y = √ 63 +6+ 6 = √ 8 (loại)
 x=7
o y = √ 73 +7+6 = 2 mod 11
o vậy P7 (7, 2) → P8(7, -2) → P8(7, 9)
 x=8
o y = √ 83 +8+6 = 3 mod 11
49
o vậy P9 (8, 3) → P8(8, -3) → P10(8, 8)
 x = 9 → y = √ 93 +9+ 6 = √ 7 (loại)
 x = 10
o y = √ 103 +10+6 = 2 mod 11
o vậy P11 (10, 2) → P8(10, -2) → P12(10, 9)
 Và P13 là điểm vô cùng (∞ )
Tính tất cả các giá trị của ka với 1 < k < 14, trong đó a = (2, 7):
 k =1 → a = (2, 7)
 k =2 → 2a = a + a
3 x 2a + a 3.22 +1 13 mod 11 2
o s= = = 14 mod 11 = 3 = 2.3-1 = 2.4 = 8 mod 11
2y 2. 7
o x 2 a = s2 - 2 x a = 82 - 2.2 = 5 mod 11
o y 2 a = s( x a - x 2 a)- y a= 8(2-5)-7 = -31 = 2 mod 11
o 2a = (5, 2)
 k =3 → 3a = (8, 3)
 k =4 → 4a = (10, 2)
 k =5 → 5a = (3, 6)
 k =6 → 6a = (7, 9)
 k =7 → 7a = (7, 2)
 k =8 → 8a = (3, 5)
 k =9 → 9a = (10, 9)
 k =10 → 10a = (8, 8)
 k =11 → 11a = (5, 9)
 k =12 → 12a = (2, 4)
 k =13 → 13a = (∞ )
 k =14 → 14a = (2, 7)
Tính khóa công khai:
 k = 6 → Q = ka → (7, 9)
 k = 2 → Q = ka → (5, 2)
 k = 7 → Q = ka → (7, 2)

Y2 = x3 + x +6 mod 11
- Chọn 1 điểm trên đường cong : P = (2, 7)
- k=3
 Sinh cặp khóa :
- Khóa bí mật : d =7
- Khóa công khai : Q = d*P = 7(2, 7)= (7, 2)
50
 Nhúng m=10 vào đường cong ta được :
- Y2 = 103 + 10 +6 mod11 = 4 ⇒ y= 2
M(10, 2);

 Mã hóa :
- C1 =kP= 3(2, 7)= (8, 3);
- C2= M + kQ = (10, 2) + 3(7, 2) = (2, 4)
C = [(8, 3),(2, 4)]
 Giải mã :
M = C2 -dC1 = (2, 4) – 7(8, 3) = (2, 4) – (3, 5) = (2, 4)+ (3, 6) = (10,
2)

51
Tài liệu tham khảo
[1] C. Research, Standards For Efficient Cryptography, SEC 1: Elliptic
Curve Cryptography. Certicom Corp, 2000
[2] D. Hankerson, J. L. Hernandez, and A. Menezes, “Software
Implementation of Elliptic Curve Cryptography over Binary Fields,”
CHES2000, vol. 1965, pp.243–267, 2000.
[3] L. Gao, S. Shrivastava, and G. E. Sobelman, “Elliptic Curve Scalar
Multiplier
Design Using FPGAs,” CHES’99, vol. 1717, pp. 257–268, 1999.
[4] L. Laurie, M. Alfred, Q. Minghua, S. Jerry, and V. Scott, “An Efficient
Protocol for Authenticated Key Agreement,” Designs Codes and
Cryptography, vol. 28, no. 2, 1998.
[5] I. F. Blake, G. Seroussi, and N. P. Smart, Advances in Elliptic Curve
Cryptography. Cambridge University Press, 2005.
[6] D. Hankerson, A. Menezes, and S. Vanstone, Guide to Elliptic Curve
Cryptography. Springer-Verlag, 2004
[7] L. C. Washington, Elliptic Curves Number Theory and Cryptography,
Second Edition. CRC Press, 2008.

52

You might also like