Professional Documents
Culture Documents
ĐỀ TÀI 05
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:
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 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.
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)
Để đả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)
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ỏ
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:
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 ).
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 ∞.
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
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 + μ
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
Để 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.
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
đơ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
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
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
Đị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 =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:
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
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.
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.
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.
35
• Tính giá trị của điểm Q = d × P ∈ E. Đây chính là khóa công khai.
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.
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
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.
-1 -1 1 1
-1 -1
-1 1
-1
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
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
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
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
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
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)
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