TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA TOÁN
****************
NGUYỄN HỒNG NHUNG
BÀI TOÁN LOGARIT RỜI RẠC
VÀ ỨNG DỤNG TRONG MẬT MÃ
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Toán ứng dụng
Người hướng dẫn khoa học
TS Trần Vĩnh Đức
Hà Nội - 2015
LỜI CẢM ƠN
Em xin chân thành cảm ơn Thầy giáo Trần Vĩnh Đức đã tận tình
hướng dẫn, giúp đỡ em trong suốt thời gian thực hiện khóa luận.
Em xin chân thành cảm ơn các thầy, các cô trong tổ ứng dụng-khoa
Toán, trường Đại học sư phạm Hà Nội 2 đã tạo mọi điều kiện giúp đỡ em
hoàn thành khóa luận này.
Em xin chân thành cảm ơn gia đình và bạn bè đã tạo mọi điều kiện
thuân lợi cho em trong quá trình thực hiện khóa luận.
Em xin chân thành cảm ơn.
Hà Nội, tháng 05 năm 2015
Sinh viên
Nguyễn Hồng Nhung
i
LỜI CAM ĐOAN
Em xin cam đoan, dưới sự hướng dẫn của Thầy giáo Trần Vĩnh Đức
khóa luận "Bài toán logarit rời rạc và ứng dụng trong mật mã"
được hoàn thành không trùng với bất kỳ đề tài nào khác.
Trong quá trình hoàn thành khóa luận, em đã thừa kế những thành
tựu của các nhà khoa học với sự trân trọng và biết ơn.
Hà Nội, tháng 05 năm 2015
Sinh viên
Nguyễn Hồng Nhung
ii
Mục lục
Mở đầu
1
1 Tổng quan về lý thuyết nhóm
2
2 Bài toán logarit rời rạc và ứng dụng trong mật mã
7
2.1. Bài toán logarit rời rạc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2. Diffie-Hellman trao đổi khóa bảo mật . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3. Hệ thống mật mã khóa công khai ElGamal . . . . . . . . . . . . . . . . . . . . .
11
2.4. Bài toán logarit rời rạc khó đến mức nào? . . . . . . . . . . . . . . . . . . . . . .
14
2.5. Thuật toán va chạm cho DLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.7. Thuật toán Pohlig–Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Định lý phần dư Trung Quốc
Kết luận
30
Tài liệu tham khảo
31
iii
MỞ ĐẦU
1. Lí do chọn đề tài
Bài toán logarit rời rạc có ứng dụng quan trọng trong thực tiễn, nó
xuất hiện trên cơ sở phát triển của khoa học kĩ thuật và những yêu cầu đòi
hỏi của thực tế. Đặc biệt bài toán logarit rời rạc có ứng dụng quan trọng
trong mật mã. Với mong muốn được đi sâu tìm hiểu về bộ môn này dưới
góc độ một sinh viên sư phạm Toán và trong phạm vi của một khóa luận
tốt nghiệp cùng với sự hướng dẫn của thầy giáo - TS. Trần Vĩnh Đức, em
xin trình bày hiểu biết của mình về đề tài "Bài toán logarit rời rạc và ứng
dụng trong mật mã."
2. Mục đích nghiên cứu
Quá trình thực hiện đề tài đã bước đầu làm quen với việc nghiên cứu
khoa học, tìm hiểu sâu hơn về bài toán logarit rời rạc và ứng dụng của nó
trong mật mã.
3. Nhiệm vụ nghiên cứu
Đề tài nghiên cứu nhằm đi sâu khai thác ứng dụng của bài toán
logarit rời rạc trong mật mã.
4. Phương pháp nghiên cứu
Đề tài được hoàn thành dựa trên sự kết hợp các phương pháp: nghiên
cứu lí luận, phân tích, tổng hợp, đánh giá.
5. Cấu trúc khóa luận
Ngoài phần mở đầu, kết luận, danh mục tài liệu tham khảo thì khóa
luận bao gồm 2 chương:
Chương 1: Tổng quan về lí thuyết nhóm.
Chương 2: Bài toán logarit rời rạc và ứng dụng trong mật mã.
Chương 1
Tổng quan về lý thuyết nhóm
Chương này giới thiệu tổng quan một vài kết quả của lý thuyết nhóm
có ứng dụng trong bài toán logarit rời rạc.
Trước hết, ta nói về lũy thừa các phần tử trong F∗p (với Fp =
{0, 1, ..., p − 1}, p nguyên tố là một trường) lũy thừa chỉ đơn giản là việc
lặp lại phép nhân. Chúng ta nhấn mạnh một số đặc trưng quan trọng của
phép nhân trong F∗p và một vài tính chất cơ bản.
Các tính chất này là:
• Có một phần tử 1 ∈ F∗p thỏa mãn 1.a = a với mỗi a ∈ F∗p .
• Mỗi a ∈ F∗p có một nghịch đảo a−1 ∈ F∗p thỏa mãn a.a−1 = a−1 .a = 1.
• Phép nhân có tính kết hợp: a.(b.c) = (a.b).c với mọi a, b, c ∈ F∗p .
• Phép nhân có tính giao hoán: a.b = b.a với mọi a, b ∈ F∗p .
Giả sử thay phép nhân trong F∗p bằng phép cộng trong Fp . Ta cũng thay 0
ở vị trí số 1 và −a ở vị trí của a−1 . Khi đó tất cả bốn tính chất vẫn đúng:
• 0 + a = a với mỗi a ∈ Fp .
• Mỗi a ∈ Fp có một phần tử đối −a ∈ Fp với a + (−a) = (−a) + a = 0.
2
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
• Ngoài ra có tính kết hợp, a + (b + c) = (a + b) + c với mọi a, b, c ∈ Fp .
• Ngoài ra có tính giao hoán, a + b = b + a với mọi a, b ∈ Fp .
Định nghĩa 1.1. Một nhóm gồm một tập G và một phép toán, mà chúng
biểu thị bởi , kết hợp hai phần tử a, b ∈ G để có được phần tử a b ∈ G.
Phép toán
được yêu cầu phải có ba tính chất sau đây:
[ Nhân với phần tử đơn vị]
Có e ∈ G sao cho
e a = a e = a với mỗi a ∈ G
[Nhân với phần tử nghịch đảo] Đối với mỗi a ∈ G có một (duy
nhất) a−1 ∈ G
thỏa mãn a a−1 = a−1 a = e.
[Kết hợp]
a (b c) = (a b) c với mọi a, b, c ∈ G.
Ngoài ra, nếu phần tử thỏa mãn
[Luật giao hoán] a b = b a với mọi a, b ∈ G,
thì nhóm này được gọi là một nhóm giao hoán hoặc một nhóm abel.
Nếu G có hữu hạn phần tử, ta nói rằng G là một nhóm hữu hạn. Bậc
của G là số phần tử trong G; nó được ký hiệu là |G| hoặc #G.
Ví dụ 1.1. Nhóm có mặt khắp nơi trong toán học và trong khoa học tự
nhiên. Dưới đây là một số ví dụ:
(a) G = F∗p và
= phép nhân. Phần tử đơn vị là e = 1, phần tử
nghịch đảo tồn tại. G là một nhóm hữu hạn có bậc p − 1.
(b) G = Z/N Z và
= phép cộng. Phần tử đơn vị là e = 0 và phần
tử đối của a là −a. G là một nhóm hữu hạn có bậc N .
3
Khóa luận tốt nghiệp
(c) G = Z và
Nguyễn Hồng Nhung
= phép cộng. Phần tử đơn vị là e = 0 và phần tử đối
của a là −a. Nhóm G này là một nhóm vô hạn.
(d) Chú ý rằng G = Z và
= phép nhân không phải là một nhóm,
vì hầu hết phần tử không có phần tử nghịch đảo phép nhân bên trong Z.
(e) Tuy nhiên, G = R∗ và
= phép nhân là một nhóm, vì tất cả các
phần tử có phần tử nghịch đảo phép nhân bên R∗ .
(f) Một ví dụ về một nhóm không giao hoán là
G=
với phép toán
a b
c d
: a, b, c, d ∈ R và ad − bc = 0
= phép nhân ma trận. Phần tử đơn vị là e =
1 0
0 1
và
nghịch đảo được cho bởi công thức quen thuộc
−1
a b
c d
d
ad−bc
−c
ad−bc
=
−b
ad−bc
a
ad−bc
Chú ý rằng G là nhóm không giao hoán, ví dụ
1 1
1 1
0 1
0 1
.
1 1
1 1
0 1
0 1
không bằng
.
(g) Tổng quát hơn, ta có thể sử dụng các ma trận có kích thước bất
kỳ. Điều này tạo ra nhóm tuyến tính tổng quát
GLn (R) = ma trận vuông A cấp n với hệ số thực và det(A) = 0
và phép toán
= phép nhân ma trận. Ta có thể tạo ra các nhóm khác bằng
cách thay thế R với một số trường khác, ví dụ trường hữu hạn Fp .
Cho g là một phần tử của nhóm G và cho x là số nguyên dương. Khi đó
4
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
g x có nghĩa là ta áp dụng phép toán nhóm x lần tới phần tử g,
g x = g g g ... g
x lần lặp lại
Nếu x là một số nguyên âm, ta định nghĩa g x là (g −1 )−x . Cho x = 0, tập
g 0 = e là các phần tử đơn vị của G.
Định nghĩa 1.2. Cho G là một nhóm và cho a ∈ G là một phần tử của
nhóm. Giả sử tồn tại một số nguyên dương d với ad = e. Số d nhỏ nhất
như vậy được gọi là bậc của a. Nếu không có d như vậy, thì a được cho là
có bậc vô hạn.
Mệnh đề 1.1. Cho G là nhóm hữu hạn. Thì mỗi phần tử của G có bậc
hữu hạn. Ngoài ra, nếu a ∈ G có bậc d và nếu ak = e, thì d | k.
Chứng minh. Vì G là hữu hạn, dãy
a, a2 , a3 , a4 , ...
cuối cùng phải có một sự lặp lại. Nghĩa là tồn tại số nguyên dương i và j
với i < j sao cho ai = aj . Nhân cả hai vế với a−i và áp dụng tính chất của
nhóm ta được ai−j = e. Khi i − j > 0, chúng ta gọi d là số mũ dương nhỏ
nhất thỏa mãn ad = e.
Bây giờ giả sử rằng k ≥ d thỏa mãn ak = e. Chúng ta chia k cho d
để có được
k = dq + r với 0 ≤ r < d
Sử dụng ak = ad = e, chúng ta nhận thấy rằng
e = ak = adq+r = (ad )q ar = eq ar .
Nhưng d là số mũ dương nhỏ nhất của a thỏa mãn ad = e, vì vậy chúng
ta phải có r = 0. Do đó k = dq, vậy d | q.
5
✷
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
Định nghĩa 1.3. (Định lý Lagrange). Cho G là một nhóm hữu hạn và cho
a ∈ G. Thì bậc của G chia hết cho bậc của a.
Chính xác hơn, cho n = |G| là bậc của G và cho d là bậc của a, tức
là, ad là số mũ dương nhỏ nhất của a bằng e. Khi đó
an = e và d | n.
Chứng minh. Chúng ta cho chứng minh đơn giản trong trường hợp
G là giao hoán.
Vì G là hữu hạn, chúng ta có thể liệt kê các phần tử của nó như sau
G = {g1 , g2 , ..., gn }.
Bây giờ chúng ta nhân mỗi phần tử của G với a để có được một tập mới,
chúng ta gọi là Sa ,
Sa = {a g1 , a g2 , ..., a gn }.
Chúng ta thấy các phần tử của Sa là khác nhau. Để thấy điều này, giả sử
rằng a gi = a gj . Nhân cả hai vế với a−1 cho gi = gj . Do đó Sa chứa n
phần tử khác nhau và bằng số phần tử của G. Do đó Sa = G, vì vậy nếu
chúng ta nhân tất cả các phần tử của Sa với nhau cũng bằng nhân tất cả
các phần tử của G với nhau. (Chú ý rằng chúng ta đang sử dụng giả định
rằng G là giao hoán.) Như vậy
(a g1 ) (a g2 ) ... (a gn ) = g1 g2 ... gn .
Chúng ta có thể sắp xếp lại bậc của tích số bên trái (lại sử dụng giao hoán)
để đạt được
an g1 g2 ... gn = g1 g2 ... gn .
Bây giờ nhân với (g1 g2 ... gn )−1 được an = e.
6
✷
Chương 2
Bài toán logarit rời rạc và ứng dụng
trong mật mã
2.1.
Bài toán logarit rời rạc
Bài toán logarit rời rạc là bài toán xuất hiện ở nhiều dạng, bao gồm
cả các dạng mod p mô tả trong phần này và các dạng đường cong elliptic
hiện đang được sử dụng rộng rãi trong thực tế. Các đề xuất đầu tiên về
giao thức trao đổi khóa chung do Diffie và Hellman, dựa trên bài toán
logarit rời rạc trong trường hữu hạn Fp .
Cho p là một số nguyên tố (lớn). Chúng ta biết rằng tồn tại một
phần tử nguyên thủy g. Điều này có nghĩa mỗi phần tử khác không của Fp
tương đương với một lũy thừa của g. Đặc biệt, bằng định lí Fermat nhỏ có
g p−1 = 1, và lũy thừa nhỏ nhất của g là bằng 1. Tương tự, dãy các phần
tử
1, g, g 2 , g 3 , ..., g p−2 ∈ F∗p
là một dãy đầy đủ các phần tử trong F∗p theo một thứ tự.
Định nghĩa 2.1. Cho g là một căn nguyên thủy của Fp và cho h là phần
tử khác không của Fp . Bài toán logarit rời rạc (DLP) là bài toán về tìm số
7
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
mũ x sao cho
g x ≡ h mod p.
Số x được gọi là logarit rời rạc của h với cơ số g và được kí hiệu là logg (h).
Chú ý 2.1. Bài toán logarit rời rạc là một bài toán đặt ra tìm số mũ
nguyên x sao cho g x = h . Tuy nhiên, nếu có nghiệm thì có vô số nghiệm,
vì định lí Fermat nhỏ cho chúng ta biết rằng g p−1 ≡ 1 mod p. Do đó nếu
x là nghiệm của g p−1 = h, thì x + k(p − 1) cũng là nghiệm với mỗi giá trị
của k, vì
g x+k(p−1) = g x .(g p−1 )k ≡ h.1k ≡ h mod p.
Như vậy logg (h) được xác định bằng cách cộng hoặc trừ đi bội số của
p − 1. Nói cách khác, logg (h) được xác định theo mô đun p − 1. Nó không
phải là khó để xác minh rằng logg cho một hàm được xác định rõ
logg : F∗p −→
Z
.
(p − 1)Z
(2.1)
Đôi khi, vì sự cụ thể, ta đề cập đến “các” logarit rời rạc như các số nguyên
x nằm giữa 0 và p − 2 thỏa mãn g x ≡ h mod p.
Chú ý 2.2. Không khó để chứng minh rằng
logg (ab) = logg (a) + logg (b) với mọi a, b ∈ F∗p .
Trong thuật ngữ toán học, logarit rời rạc logg là phép đẳng cấu nhóm
từ F∗p đến Z/(p − 1)Z.
Ví dụ 2.1. Số p = 56509 là số nguyên tố, và ta kiểm tra xem g = 2 có là
một căn nguyên thủy mô đun p. Làm thế nào để tính toán logarit rời rạc
của h = 38679? Rõ ràng phương pháp duy nhất là tính toán
22 , 23 , 24 , 25 , 26 , 27 , ...
8
mod 56509
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
cho đến khi ta tìm thấy một số lũy thừa đó bằng 38679. Ta thấy rằng
logg (h) = 11235, có thể xác minh điều này bằng cách tính toán 211235
mod 56509 và kiểm tra rằng nó bằng 38679.
Chú ý 2.3. Phát biểu của chúng ta trong bài toán logarit rời rạc bao gồm
các giả định rằng cơ số g là một căn nguyên thủy mô đun p, nhưng điều
này là không đúng. Nói chung, đối với bất kỳ g ∈ F∗p và bất kỳ h ∈ F∗p , bài
toán logarit rời rạc là xác định một số mũ x thỏa mãn g x ≡ h mod p, giả
sử rằng tồn tại x.
Định nghĩa 2.2. Cho G là một nhóm với phép nhân . Bài toán logarit
cho G là bài toán có đầu vào là hai phần tử g ∈ G và h ∈ G. Tìm số
nguyên x thỏa mãn:
g g g ... g = h
x lần
2.2.
Diffie-Hellman trao đổi khóa bảo mật
Thuật toán Diffie-Hellman trao đổi giải quyết tình trạng khó xử sau.
Alice và Bob muốn chia sẻ một khóa bí mật để sử dụng trong một thuật
toán mã hóa đối xứng, nhưng phương tiện truyền thông duy nhất của họ
không an toàn. Mỗi mẩu thông tin mà họ trao đổi được quan sát bởi đối
thủ của họ là Eve. Làm thế nào Alice và Bob có thể chia sẻ một chìa khóa
mà Eve không thể thấy? Thoạt nhìn nó dường như Alice và Bob phải đối
mặt với một nhiệm vụ không thể. Khi đó thấy rằng bài toán logarit rời rạc
cho F∗p cung cấp một giải pháp hợp lí.
Bước đầu tiên là Alice và Bob thống nhất một số nguyên tố lớn p và
một số nguyên khác không g mô đun p. Alice và Bob công khai các giá trị
của p và g; ví dụ, họ có thể gửi các giá trị trên các trang web của họ, vì
vậy Eve cũng biết đến chúng. Vì các lý do khác nhau để được thảo luận
9
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
sau này, họ chọn g mà bậc của nó trong F∗p là một nguyên tố lớn.
Bước tiếp theo là cho Alice chọn số nguyên bí mật cô ấy không tiết
lộ cho bất kỳ ai, trong cùng thời gian Bob chọn số nguyên b mà anh ấy giữ
bí mật. Bob và Alice dùng số nguyên bí mật của họ để tính toán
A ≡ ga
mod p và B ≡ g b
Alice tính toán này
mod p
Bob tính toán này
Họ tiếp tục trao đổi các giá trị tính toán, Alice gửi cho Bob A và Bob gửi
B cho Alice. Lưu ý rằng Eve thấy được các giá trị của A và B, vì chúng
được gửi qua các kênh truyền thông không an toàn.
Cuối cùng, Bob và Alice một lần nữa sử dụng số nguyên bí mật của
họ để tính toán
A ≡ Ba
mod p và B ≡ Ab
Alice tính toán này
mod p
Bob tính toán này
Các giá trị mà họ tính toán, A và B tương ứng, thực sự giống nhau, khi
đó
A ≡ B a ≡ (g b )a ≡ g ab ≡ (g a )b ≡ Ab ≡ B
mod p.
Giá trị chung này là chìa khoá trao đổi chúng.
Ví dụ 2.2. Alice và Bob đồng ý sử dụng số nguyên tố p = 941 và căn
nguyên thủy g = 627. Alice chọn khóa bí mật a = 347 và tính A = 390 ≡
627347 mod 941. Tương tự như vậy, Bob chọn khóa bí mật b = 781 và tính
B = 691 ≡ 627781 mod 941 . Alice gửi Bob số 390 và Bob gửi Alice số
691. Cả hai truyền đi được thực hiện trên một kênh không an toàn, vì vậy
cả hai A = 390 và B = 691 được xem xét công khai. Các số a = 347 và
b = 781 không được truyền đi mà giữ bí mật. Sau đó, Alice và Bob đều có
thể tính toán số
470 ≡ 627347.781 ≡ Ab ≡ B a
10
mod 941,
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
vậy 470 là chia sẻ bí mật của họ.
Giả sử rằng Eve thấy toàn bộ trao đổi này. Cô ấy có thể đã khôi phục
lại chia sẻ bí mật của Alice và Bob nếu cô ấy có thể giải quyết một trong
các đồng dư
627a ≡ 390
mod 941 hoặc 627b ≡ 691
mod 941,
kể từ đó cô sẽ biết số mũ bí mật của họ. Theo như được biết, đây là cách
duy nhất cho Eve để tìm giá trị chia sẻ bí mật mà không cần hỗ trợ của
Alice hay Bob.
Tất nhiên, ví dụ của chúng ta sử dụng con số đó là quá nhỏ để có đủ
khả năng Alice và Bob thực sự bảo mật bất kì, vì nó mất rất ít thời gian
cho máy tính của Eve để kiểm tra tất cả các lũy thừa có thể của 627 mô
đun 941. Hướng dẫn hiện tại cho thấy Alice và Bob chọn một nguyên tố p
có khoảng 1.000 bit (tức là, p ≈ 21000 ) và phần tử g có bậc là số nguyên tố
và xấp xỉ p 2.
Định nghĩa 2.3. Cho p là một số nguyên tố và g là một số nguyên. Bài
toán Diffie-Hellman (DHP) là bài toán tính toán giá trị g ab mod p từ các
giá trị đã biết g a mod p và g b mod p.
Rõ ràng là DHP không khó hơn DLP. Nếu Eve có thể giải quyết
DLP, thì cô ấy có thể tính toán số mũ bí mật a và b của Alice và Bob cắt
ra từ các giá trị A = g a và B = g b , và sau đó nó rất dễ dàng cho cô ấy để
tính toán khóa chia sẻ g ab của họ. (Trong thực tế, Eve cần phải tính toán
duy nhất a và b.) Nhưng chuyện này là chưa rõ ràng.
2.3.
Hệ thống mật mã khóa công khai ElGamal
Trong phần này chúng ta mô tả phiên bản hệ thống mật mã khóa
công khai của ElGamal (PKC ElGamal) được dựa trên bài toán logarit rời
11
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
rạc cho F∗p .
PKC ElGamal là ví dụ đầu tiên của ta về một hệ thống mật mã
khóa công khai. Alice bắt đầu bằng việc xuất bản thông tin bao gồm một
khóa công khai và một thuật toán. Khóa công khai chỉ đơn giản là một
con số, và các thuật toán là phương pháp mà Bob mã hóa thông tin của
mình bằng cách sử dụng khóa công khai của Alice. Alice không tiết lộ khóa
riêng của mình. Các khóa riêng cho phép Alice giải mã các thông tin đã
được mã hóa bằng khóa công khai của mình.
Vì PKC ElGamal, Alice cần một số nguyên tố lớn p mà bài toán
logarit rời rạc trong F∗p là khó khăn, và cô ấy cần một phần tử g mô đun
p lớn (nguyên tố). Alice chọn một số bí mật để làm khóa riêng của cô, và
cô ấy tính toán con số
A ≡ ga
mod p.
Chú ý giống Diffie-Hellman trao đổi khóa. Alice công bố khóa công khai
A của cô và khóa riêng cô ấy giữ bí mật một mình.
Bây giờ giả sử Bob muốn mã hóa một thông tin bằng khóa công khai
A của Alice. Ta sẽ cho rằng thông tin m của Bob là một số nguyên giữa
2 và p. Để mã hóa m, đầu tiên Bob chọn ngẫu nhiên số k khác mô đun p.
Bob sử dụng k để mã hóa một và chỉ một thông tin, và sau đó ông đã loại
bỏ nó. Số k được gọi là một chìa khóa không lâu, vì nó tồn tại duy nhất
nhằm mục đích mã hóa một thông tin.
Bob lấy khoá công khai thông tin m của ông ấy, chọn ngẫu nhiên
chìa khóa k tạm thời, khóa A Alice công khai và sử dụng chúng để tính
toán hai con số
c1 ≡ g k
mod p và c2 ≡ mAk
mod p.
(Hãy nhớ rằng g và p là các tham số công khai, vì Bob cũng biết giá trị
của chúng.) Văn bản viết thành mật mã của Bob, nghĩa là, mã hoá của
12
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
ông ấy về m, là cặp số (c1 , c2 ), ông ấy gửi cho Alice.
Làm thế nào để Alice giải mã bản mã (c1 , c2 ) của Bob? Từ đó Alice
biết là cô có thể tính toán
x ≡ ca1
mod p,
và x−1 mod p. Tiếp theo Alice nhân c2 với x−1 , và được giá trị kết quả là
bản rõ m. Để biết tại sao, ta mở rộng giá trị của x−1 .c2 và thấy rằng
x−1 .c2 ≡ (ca1 )−1 .c2
mod p, khi x ≡ ca1
≡ (g ab )−1 .(mAk )
mod p,
mod p, khi c1 ≡ g k , c2 ≡ mAk
≡ (g ab )−1 .(m(g a )k )
mod p, khi A ≡ g a
mod p,
mod p,
≡ m mod p, khi số hạng g ak triệt tiêu lẫn nhau.
Eve biết tham số p và g công khai, và cô cũng biết được giá trị của A ≡ g a
mod p vì khóa công khai A của Alice được mọi người biết đến. Nếu Eve
có thể giải quyết bài toán logarit rời rạc, cô ấy có thể tìm thấy a và giải
mã thông tin. Nếu không thì nó sẽ xuất hiện khó khăn cho Eve để tìm ra
bản rõ.
Ví dụ 2.3. Alice sử dụng số nguyên tố p = 467 và căn nguyên thủy g = 2.
Cô chọn a = 153 là chìa khóa cá nhân của mình và tính toán khoá công
khai
A ≡ g a ≡ 2153 ≡ 224
mod 467.
Bob quyết định gửi cho Alice thông tin m = 331. Ông đã chọn một khóa
không lâu ngẫu nhiên, ông chọn k = 197, và ông tính toán hai con số
c1 ≡ 2197 ≡ 87
mod 467 và c2 ≡ 331.224197 ≡ 57
mod 467.
Các cặp (c1 , c2 ) = (87, 57) là các bản mã mà Bob gửi cho Alice.
Alice, biết a = 153, đầu tiên tính toán
x ≡ ca1 ≡ 87153 ≡ 367
mod 46, và sau đó x−1 ≡ 14
13
mod 467.
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
Cuối cùng, cô ấy tính toán
c2 x−1 ≡ 57.14 ≡ 331
mod 467
và phục hồi thông tin bản rõ m.
Chú ý 2.4. Trong các hệ thống mật mã ElGamal, bản rõ là một số nguyên
m giữa 2 và p − 1, trong khi văn bản viết thành mật mã bao gồm hai số
nguyên c1 và c2 trong cùng khoảng biến thiên.
2.4.
Bài toán logarit rời rạc khó đến mức nào?
Ký hiệu bậc đã được phát minh ra để thực hiện những ý tưởng chính
xác. Nó phổ biến khắp toán học và khoa học máy tính và cung cấp một
cách tiện dụng để có được sự thu hút về độ lớn của con số.
Định nghĩa 2.4. (Kí hiệu bậc). Cho f (x) và g(x) là hàm số của x lấy giá
trị dương. Chúng ta nói rằng "f là O lớn của g" và viết
f (x) = O(g(x))
nếu có hằng số dương c và C sao cho
f (x) ≤ cg(x) với mọi x ≥ C.
Đặc biệt, chúng ta viết f (x) = O(1) nếu f (x) bị chặn với mọi x ≥ C.
Các mệnh đề tiếp theo cho một phương pháp mà đôi khi có thể được
sử dụng để chứng minh rằng f (x) = O(g(x)).
Mệnh đề 2.1. Nếu giới hạn
f (x)
x→∞ g(x)
lim
tồn tại (và là hữu hạn), thì f (x) = O(g(x)).
14
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
Chứng minh. Giả sử L là giới hạn. Theo định nghĩa của giới hạn, cho
bất kỳ > 0 và một hằng số C sao cho
f (x)
− L < với mọi x > C .
g(x)
Đặc biệt, khi = 1, chúng ta thấy rằng
f (x)
< L + 1 với mọi x > C1 .
g(x)
Do đó theo định nghĩa, f (x) = O(g(x)) với c = L + 1 và C = C1 .
✷
Ví dụ 2.4. Ta có 2x3 − 3x2 + 7 = O(x3 ), khi đó
2x3 − 3x2 + 7
lim
= 2.
x→∞
x3
Tương tự như vậy, chúng ta có x2 = O(2x ), khi đó
x2
lim
= 0.
x→∞ 2x
(Nếu bạn không biết giá trị của giới hạn này thì sử dụng quy tắc L’Hôpital
hai lần.)
Tuy nhiên, lưu ý rằng chúng ta có thể có f (x) = O(g(x)) ngay cả
khi giới hạn của f (x)/g(x) không tồn tại. Ví dụ, giới hạn
(x + 2)cos2 (x)
lim
x→∞
x
không tồn tại, nhưng
(x + 2)cos2 (x) = O(x), khi đó (x + 2)cos2 (x) ≤ x + 2 ≤ 2x với mọi x ≥ 2.
Ví dụ 2.5. Dưới đây là một vài ví dụ kí hiệu về O lớn.
(a)x2 +
√
x = O(x2 ).
(b)5 + 6x2 − 37x5 = O(x5 ).
(c)k 300 = O(2k ).
(e)k 2 2k = O(e2k ).
(d)(lnk)375 = O(k 0.001 ).
(f )N 10 2N = O(eN ).
15
Khóa luận tốt nghiệp
2.5.
Nguyễn Hồng Nhung
Thuật toán va chạm cho DLP
Trong phần này, chúng ta mô tả một thuật toán logarit rời rạc do
Shanks. Nó là một thuật toán ví dụ về sự va chạm, hoặc giao ở giữa. Thuật
toán của Shanks làm việc trong nhóm bất kỳ.
Chúng ta bắt đầu bằng cách nhắc lại thời gian chạy của các thuật
toán để giải quyết DLP.
Mệnh đề 2.2. (Giới hạn tầm thường cho DLP). Cho G là một nhóm và
cho g ∈ G là một phần tử có bậc N . (Nhớ lại rằng điều này có nghĩa là
g N = e và không có lũy thừa dương của g nhỏ hơn tương đương với phần
tử đồng nhất e.) Khi đó bài toán logarit rời rạc
gx = h
(2.2)
có thể được giải quyết trong O(N ) bước, mà mỗi bước bao gồm phép nhân
với g.
Chứng minh. Tạo một dãy các giá trị g x với x = 0, 1, 2, ..., N − 1. Lưu
ý rằng mỗi giá trị kế tiếp có thể thu được bằng cách nhân giá trị trước với
g. Nếu một đáp án cho g x = h tồn tại, thì h sẽ xuất hiện trong dãy của
✷
bạn.
Mệnh đề 2.3. (Thuật toán Babystep-Giantstep của Shanks). Cho G là
một nhóm và cho g ∈ G là một phần tử có bậc N ≥ 2. Thì giải quyết bài
√
toán logarit rời rạc g x = h trong O( N .logN ) bước.
1. Cho n = 1 +
√
N , thì n >
√
N.
2. Tạo ra hai dãy,
Dãy 1 : e, g, g 2 , g 3 , ..., g n ,
2
Dãy 2 : h, h.g −n , h.g −2n , h.g −3n , ..., h.g −n .
16
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
3. Tìm thấy một kết hợp giữa hai dãy, là g i = hg −jn .
4. Thì x = i + jn là một kết quả cho g x = h.
k
gk
h.uk
k
gk
h.uk
1
9704
347
9
2
6181
13357
10 12918 11741
3
5763
12423
11 16360 16367
4
1128
13153
12 13259
7315
5
8431
7928
13
2549
6 16568
1139
14 16911 10221
7 14567
6259
15
4351
16289
8
2987
12013
16
1612
4062
k
gk
h.uk
k
gk
h.uk
17 10137 10230
25
4970
12260
18 17264
3957
26
9183
6578
19
4230
9195
27 10596
7705
20
9880
13628
28
2427
1425
21
9963
10126
29
6902
6594
22 15501
5416
30 11969 12831
23
6854
13640
31
6045
4754
24 15680
5276
32
7583
14567
15774 16564
4125
Bảng 2.1: Babystep-giantstep để giải 9704x ≡ 13896
mod 17389
Ví dụ 2.6. Chúng ta minh họa phương pháp Babystep-giantstep của Shanks
bằng cách sử dụng nó để giải quyết bài toán logarit rời rạc
g x = h trong F∗p với g = 9704, h = 13896, và p = 17389.
√
Số 9704 có bậc 1242 trong F∗17389 . Đặt n =
1242 + 1 và u = g −n =
9704−36 = 2494. Bảng 2.1 dãy các giá trị của g k và h.uk khi k = 1, 2, ... Từ
17
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
bảng, chúng ta tìm thấy sự va chạm
97047 = 14567 = 13896.249432 trong F17389 .
Bằng cách sử dụng một thực tế rằng 2494 = 9704−36 , chúng ta tính toán
13896 = 97047 .2494−32 = 97047 .(970436 )32 = 97041159 trong F17389 .
Do đó x = 1159 giải quyết bài toán 9704x trong F17389 .
2.6.
Định lý phần dư Trung Quốc
Định lý phần dư Trung Quốc mô tả giải pháp cho một hệ thống đồng
dư dồng thời. Đơn giản nhất là một hệ thống hai đồng dư,
x ≡ a mod m và x ≡ b mod n,
(2.3)
với gcd(m, n) = 1, trong đó trường hợp định lý phần dư của Trung Quốc
là một giải pháp độc đáo theo mô đun mn.
Ví dụ 2.7. Chúng ta tìm kiếm một số nguyên x đồng thời thỏa mãn cả hai
đồng dư
x≡1
mod 5 và x ≡ 9
mod 11.
(2.4)
Đồng dư đầu tiên cho chúng ta biết rằng x ≡ 1 mod 5 , vì vậy tất cả các
đáp án thỏa mãn đồng dư đầu tiên là tập hợp các số nguyên
x = 1 + 5y, y ∈ Z.
(2.5)
Thay thế (2.5) vào đồng dư thứ hai ở (2.4) cho
1 + 5y ≡ 9
mod 11, và do đó 5y ≡ 8 mod 11.
(2.6)
Chúng ta giải quyết cho y bằng cách nhân cả hai vế (2.6) với nghịch đảo
của 5 theo mô đun 11. Nghịch đảo này tồn tại bởi vì gcd(5, 11) = 1. Trong
18
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
trường hợp này mô đun nhỏ nên chúng ta tìm thấy nó bằng cách thử và
báo lỗi; do đó 5.9 = 45 ≡ 1 mod 1.
Với trường hợp bất kì, nhân cả hai vế (2.6) với 9 được
y ≡ 9.8 ≡ 72 ≡ 6 mod 11.
Cuối cùng, thay thế các giá trị này của y vào (2.5) cung cấp kết quả
x = 1 + 5.6 = 31
cho bài toán ban đầu.
Định lý 2.1. (Định lý phần dư Trung Quốc). Cho m1 , m2 , ..., mk là một
tập hợp các số nguyên nguyên tố cùng nhau từng đôi một. Điều này có
nghĩa là
gcd(mi , mj ) = 1 với mọi i = j.
Cho a1 , a2 , .., ak là những số nguyên bất kì. Sau đó có hệ thống đồng thời
đồng dư
x ≡ a1 mod m1 , x ≡ a2 mod m2 , ..., x ≡ ak mod mk
(2.7)
có một đáp án x = c. Hơn nữa, nếu x = c và x = c là cả hai đáp án, thì
c ≡ c mod m1 m2 ...mk .
(2.8)
Chứng minh. Giả sử rằng đối với giá trị của i chúng ta đã tìm được
đáp án x = ci cho đồng dư đồng thời,
x ≡ a1 mod m1 , x ≡ a2 mod m2 , ..., x ≡ ai mod mi .
(2.9)
Ví dụ, nếu i = 1, thì c1 = a1 . Chúng ta sẽ giải thích làm thế nào để tìm
một đáp số cho thêm một đồng dư,
x ≡ a1 mod m1 , x ≡ a2 mod m2 , ..., x ≡ ai+1 mod mi+1 .
19
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
Ý tưởng để tìm một đáp số có dạng
x = ci + m1 m2 ...mi y.
Chú ý rằng giá trị này của x vẫn thỏa mãn tất cả các đồng dư (2.9), chúng
ta chỉ cần chọn y do đó nó cũng thỏa mãn x ≡ ai+1 mod mi+1 . Nói cách
khác, chúng ta cần phải tìm một giá trị của y thỏa mãn
ci + m1 m2 ...mi y ≡ ai+1 mod mi+1 .
Ta có gcd(mi+1 , m1 m2 ...mi ) = 1 điều này hoàn thành chứng minh về sự
✷
tồn tại của đáp số.
Ví dụ 2.8. Chúng ta giải quyết đồng thời ba đồng dư
x ≡ 2 mod 3, x ≡ 3 mod 7, x ≡ 4 mod 16.
(2.10)
Định lý phần dư Trung Quốc nói rằng đó là một đáp án độc đáo theo mô
đun 336, khi đó 336 = 3.7.16. Chúng ta bắt đầu với đáp án x = 2 để đồng
dư đầu tiên x ≡ 2 mod 3. Chúng ta sử dụng nó để tạo thành đáp áp tổng
hợp x = 2 + 3y và thay thế nó vào đồng dư thứ hai để có được
2 + 3y ≡ 3 mod 7.
Đơn giản hoá điều này để 3y ≡ 1 mod 7, và chúng ta nhân cả hai vế với 5
để có được y ≡ 5 mod 7. Điều này đưa ra giá trị
x = 2 + 3y = 2 + 3.5 = 17
như đáp án cho đồng dư đầu tiên trong (2.10).
Đáp án tổng hợp của hai đồng dư đầu tiên là, x = 17 + 21z. Chúng
ta thay thế vào đồng dư thứ ba để có được
17 + 21z ≡ 4 mod 16.
20
Khóa luận tốt nghiệp
Nguyễn Hồng Nhung
Đơn giản hoá điều này để 5z ≡ 3 mod 16. Chúng ta nhân với 13 để có được
z ≡ 3.13 ≡ 39 ≡ 7 mod 16.
Cuối cùng, chúng ta thay thế vào x = 17 + 21z để có được đáp án
x = 17 + 21.7 = 164.
Tất cả các đáp án thu được bằng cách cộng và trừ bội số của 336 để được
đáp án cụ thể này.
Giải đồng dư với mô đun phức hợp
Mệnh đề 2.4. Cho p là một số nguyên tố thỏa mãn p ≡ 3 mod 4. Cho a
là một số nguyên đồng dư x2 ≡ a mod p có một đáp án, như vậy tức là có
một căn bậc hai p. Thì
b ≡ a(p+1)/4
mod p
là một đáp án; nó thỏa mãn b2 ≡ a mod p.
Chứng minh. Cho g là một căn nguyên thủy mô đun p. Khi đó, a có
một căn bậc hai mô đun p và a là lũy thừa của g, nói a ≡ g 2k mod p. Bây
giờ chúng ta tính toán
b2 ≡ a
p+1
2
mod p, định nghĩa của b,
≡ (g 2k )
p+1
2
khi a ≡ g 2k ,
≡ g (p+1)k mod p
≡ a.(g p−1 )k mod p khi đó a ≡ g 2k mod p,
≡ a mod p khi đó g p−1 ≡ 1 mod p.
Do đó b thực sự là một căn bậc hai của a mô đun p.
✷
Ví dụ 2.9. Một căn bậc hai của a = 2201 mô đun nguyên tố p = 4127
chính là
b ≡ a(p+1)/4 = 22014128/4 ≡ 22011032 ≡ 3718 mod 4127.
21