Nội dung : Hệ mật khóa công khai và chữ ký số là 1 tài liệu tham khảo lĩnh vực ứng dụng lý thuyết số vào mật mã học
Trang 1Mục lục
Chương 1.KIẾN THỨC CHUẨN BỊ 2
1.1.Quan hệ chia hết 2
1.2.Ước chung lớn nhất 2
1.3.Quan hệ Đồng dư 3
1.4.Vành Zm 3
1.5.Phương trình đồng dư bậc 2 4
Chương 2.HỆ MẬT KHÓA CÔNG KHAI RSA 7
2.1.Công thức Euler và nghiệm modulo pq 7
2.2.Hệ mật khóa công khai RSA 10
2.3.Kiểm tra tính nguyên tố của một số nguyên 12
2.3.1 Phân bố của tập số nguyên tố 15
2.3.2 Chứng minh tính nguyên tố và kiểm tra xác suất Versus 16
2.4.Thuật toán Pollard:phân tích nhân tử của p − 1 17
2.5.Phân tích thông qua hiệu bình phương 19
2.6.Số mịn, sàng, xây dựng mối quan hệ cho nhân tử 24
2.6.1 Số mịn 24
2.6.2 Sàng bậc 2 26
2.6.3 Sàng trường số 32
2.7.Thặng dư bậc 2 và thuận nghịch bậc 2 35
2.8.Mã hóa theo xác suất và hệ mật Goldwasser-Micali 40
Chương 3.CHỮ KÝ SỐ 44
3.1.Chữ ký số là gì ? 44
3.2.Chữ ký số RSA 45
3.3.Chữ ký số Elgamal 48
3.3.1 Hệ mật khóa công khai Elgamal 48
3.3.2 Hệ chữ ký Elgamal 50
3.4.Chữ ký số DSA 53
Kết Luận 56
Trang 2Người ta ký hiệu số lớn nhất trong tập các ước chung của cácailàgcd(a1, a2, , an).Nếu gcd(a1, a2, , an) = 1 thì a1, a2, , an được gọi là các số nguyên tố cùng nhau.
Dễ thấy rằng các số nguyên a1, a2, , an nguyên tố cùng nhau nếu và chỉ nếu tồn tạicác số nguyên x1, x2, , xn sao cho
Trang 3Chứng minh vì gcd(a, b) = 1 nên tồn tại x, y ∈ Z sao cho ax + by = 1, nhân cả hai vếvới c ta được cax + (cb)y = c chia hết cho a.
Định nghĩa 1.2.3 (Số nguyên tố, hợp số, số chính phương) Một số nguyên
p được gọi là một số nguyên tố nếu p > 1 và p không có một ước nguyên dương nàongoài 1 và chính nó Một số nguyên m được gọi là hợp số nếu m 6= 0 và |m| có ít nhấtmột ước nguyên dương khác 1 và khác m Số tự nhiên n được gọi là một số chínhphương nếu tồn tại một số nguyên a sao cho a2= n
Nhận xét rằng nếu số nguyên tố p chia hết tích ab thì hoặc p | a hoặc p | b
Định lý 1.2.4 (Định lý cơ bản của số học) Mọi số tự nhiên lớn hơn 1 đều phântích được thành tích hữu hạn các số nguyên tố, phân tích này là duy nhất nếu không
kể đến thứ tự các thừa số
Định nghĩa 1.2.5 Số các số thuộc dãy 1, 2, , n nguyên tố với n được ký hiệu là
ϕ(n), người ta gọi hàm ϕ(n) là hàm Euler
Nếu plà một số nguyên tố thìϕ(p) = p − 1 và các số nguyên tố vớip là1, 2, , p − 1
Định nghĩa 1.3.1 Cho số nguyên dương m, hai số nguyên a và b được gọi là đồng
dư modulo m nếu hiệu a − b chia hết cho m.Nếu a đồng dư với b modulo m, ta viết
a ≡ b (mod m) và gọi đó là một đồng dư thức
Quan hệ đồng dư modulo m là một quan hệ tương đương trên Z, các lớp tươngđương theo quan hệ này được gọi là các lớp đồng dư modulo m, số các lớp thặng dưmodulo m đúng bằng m
Ký hiệu lớp thặng dư modulo m chứa số nguyên a là a hoặc a (mod m) Tập
Zm = {a : a ∈Z} là tập các lớp lớp thặng dư modulo m, ta định nghĩa các phép toáncộng và nhân như sau
Trang 4a + b = a + b và a.b = a.b.Tập Zm cùng với hai phép toán trên lập thành một vành giao hoán có đơn vị 1 vàphần tử không là 0 mà ta gọi là vành các lớp thặng dư modulo m.
Định lý 1.4.1 Lớp thặng dư a ∈Zm khả nghịch nếu và chỉ nếu gcd(a, m) = 1.Chứng minh a ∈Zm khả nghịch khi và chỉ khi tồn tạib ∈ Zm sao cho a.b = 1 hay tồntạib ∈ Z sao choab ≡ 1 (mod m) Tức là, tồn tại số nguyên avà xsao choab + mx = 1,điều này xảy ra khi và chỉ khi gcd(a, m) = 1
Nhận xét rằng nếu p là một số nguyên tố thì mọi phần tử khác lớp tương đươngcủa 0 (mod p) đều khả nghịch , do đó Zp là một trường
Có thể kiểm tra rằng tập hợp tất cả các phần tử khả nghịch modulo m với phépnhân trong Zm lập thành một nhóm có cấp ϕ(m) Do đó aϕ(m) ≡ 1 (mod m) với mọi
số nguyên a nguyên tố với m Khi m = p là số nguyên tố và gcd(a, p) = 1 thì ta có
ap−1≡ 1 (mod p)
Định nghĩa 1.4.2 Cho số nguyên m > 1 và số nguyên a sao cho gcd(a, m) = 1, khi
đó số nguyên dương dnhỏ nhất sao cho ad≡ 1 (mod m) được gọi là bậc của a modulo
m Dễ thấy rằng d tồn tại và là một ước của ϕ(m)
Định nghĩa 1.4.3 Cho một số nguyên m > 1 Số nguyên g được gọi là một cănnguyên thủy modulo m nếu g có số mũ ϕ(m) Trường hợp tồn tại căn nguyên thủymodulo m thì m được gọi là có căn nguyên thủy
Nếu m có căn nguyên thủy là g thì g là phần tử sinh của nhóm các phần thử khảnghịch modulo m tức nhóm này sẽ là một nhóm cyclic cấp ϕ(m), hơn nữa phần tử gs
với gcd(s, ϕ(m)) = 1 cũng là một căn nguyên thủy modulo m Nói thêm rằng chỉ khi
m là các số 2, 4 hoặc các số có dạng pn, 2pn với p nguyên tố lẻ và n nguyên dương, là
có căn nguyên thủy
Cho phương trình
với p nguyên tố lẻ vàgcd(a, p) = 1 Nếu tồn tại số nguyên x0 thỏa mãnx20 ≡ a (mod p)
thì x0 được gọi là nghiệm đúng của phương trình trên Lớp a (mod p) được gọi lànghiệm của phương trình trên nếu mọi phần tử trong lớp tương đương của nó đều lànghiệm đúng Dễ thấy rằng nếu x 0 là nghiệm đúng thì x 0 (mod p) sẽ là nghiệm.Định nghĩa 1.5.1 Số nguyênađược gọi là thặng dư bậc 2 hay thặng dư toàn phươngmodulo p nếu phương trình x2 ≡ a (mod p) có nghiệm
Định lý 1.5.2 Nếu a là thặng dư bậc hai modulo p thì phương trình x2 ≡ a (mod p)
có đúng hai nghiệm
Trang 5Chứng minh Do a là thặng dư bậc hai modulo p nên tồn tại số nguyên x0 sao cho
x20 ≡ a (mod p), do đó x ≡ x 0 (mod p) là nghiệm Từ (−x 0 )2 = x20 ≡ a (mod p) nên
x ≡ −x 0 (mod p) cũng là nghiệm Nếu x 0 ≡ −x 0 (mod p) thì 2x 0 ≡ 0 (mod p), do p là
số nguyên tố lẻ nên x 0 ≡ 0 (mod p) (mâu thuẫn vì gcd(a, p) = 1), phương trình bậchai trên trường Zp có tối đa hai nghiệm, do đó phương trình x2 ≡ a (mod p) có hainghiệm phân biệt x0 (mod p) và −x0 (mod p)
Trang 7Chương 2
HỆ MẬT KHÓA CÔNG KHAI RSA
Cho p là một số nguyên tố, từ Định lý Fermat nhỏ ta có
ap−1 ≡ 1 (mod p), nếu gcd(a, p) = 1.
Định lý Fermat nhỏ đã chỉ ra một tính chất đẹp của số nguyên tố, nhưng chuyện
gì sẽ xảy ra nếu ta thay p bởi một số nguyên m không nguyên tố? Liệu công thức
am−1 ≡ 1 (mod m) với gcd(a, m) = 1 vẫn còn đúng chứ? Ví dụ sau chỉ ra câu trảlời nói chung là "không" Với m = 15485207, a = 2 ta có 2m−1 = 215485206 ≡ 4136685 (mod 15485207) 6≡ 1 (mod 15485207)
Tuy nhiên, chúng ta sẽ xem xét khái quát cho trường hợp m = pq với p, q là hai sốnguyên tố phân biệt Ta bắt đầu với một ví dụ đơn giản Vớim = 3.5 = 15, xét các số
mũ modulo 15 ta nhận thấy có rất nhiều số mũ 4 đồng dư với 1 (mod 15) Cụ thể
Trang 8Chứng minh Từ gcd(a, pq) = 1 ta có gcd(a, p) = 1 với gcd(a, q) = 1 Do đó
a(p−1)(q−1)g ≡ a(p−1)(
q−1
g )
≡ 1q−1g ≡ 1 (mod p), a
Hệ mật RSA mà ta nghiên cứu ở phần tới có độ bảo mật phụ thuộc vào độ khócủa việc giải phương trình dạng xe ≡ c (mod N ), trong đó e, c, N đã biết, x là ẩn.Nếu N là số nguyên tố thì phương trình trên tương đối dễ tìm nghiệm, và được mô
tả trong mệnh đề sau
Mệnh đề 2.1.2 Cho p là số nguyên tố,e ≥ 1 là số nguyên thỏa mãngcd(e, p − 1) = 1.Khi đó tồn tại d để ed ≡ 1 (mod p − 1) và phương trình xe ≡ c (mod p) (∗) có nghiệmduy nhất cd (mod p)
Chứng minh Chúng ta xét hai trường hợp sau
Trường hợp 1 :Giả sử gcd(c, p) 6= 1 Khi đó p là một ước của c, do đó c ≡ 0 (mod p) vàphương trình xe ≡ c (mod p) trở thành xe ≡ 0 (mod p) Tức là, x ≡ 0 (mod p) Vậy cd(mod p) là nghiệm của phương trình (∗)
Trường hợp 2 :Giả sử gcd(c, p) = 1 Bởi Định lý Fermat nhỏ ta có
(cd)e = cde ≡ c1+(p−1)k ≡ c.1k ≡ c (mod p).
Do đó cd là nghiệm đúng của phương trình xe ≡ c (mod p) Bây giờ chúng ta sẽ chỉ
ra cd (mod p) là nghiệm duy nhất của (∗) Thật vậy, giả sử (∗) còn có nghiệm đúng
x1, nghĩa là xe1 ≡ c (mod p) Khi đó xe1d ≡ c d (mod p) Do x1 là nghiệm đúng của (∗)
nên gcd(x 1 , p) = 1 Vì vậy xp−11 ≡ 1 (mod p), và suy ra xde1 = x1+(p−1)k1 ≡ x 1 (mod p)
Do đó x1 ≡ x ed
1 ≡ c d (mod p) Vậy mọi nghiệm đúng của (*) đều thuộc lớp đồng dư cd(mod p) Ngược lại, nếu y ≡ cd (mod p) thì y cũng là một nghiệm đúng của (*) Vậyphương trình (*) có nghiệm duy nhất cd (mod p)
Từ mệnh đề trên, ta thấy phương trình xe ≡ c (mod N ) có thể giải được dễ dàngnếu N là một số nguyên tố Bây giờ xét trường hợp N có dạng đơn giản là tích củahai số nguyên tố phân biệtN = p.q thì nghiệm của phương trìnhxe ≡ c (mod N )đượccho bởi mệnh đề sau
Mệnh đề 2.1.3 Cho p 6= q là hai số nguyên tố, số nguyên e ≥ 1 thỏa mãn gcd(e, (p − 1)(q − 1)) = 1, nghĩa là, tồn tại d ∈ Z để de ≡ 1 (mod (p − 1)(q − 1)) Khi đó phươngtrình xe ≡ c (mod pq)(∗∗) có nghiệm duy nhất cd (mod pq)
Trang 9Chứng minh Dode ≡ 1 (mod (p−1)(q −1))nên tồn tại k ∈Z đểde = 1+(p−1)(q −1)k.Trường hợp 1:Giả sử gcd(c, pq) = 1 Khi đó x1 := cd là nghiệm đúng của (**), bởi vì
x2 ≡ x2de−(p−1)(q−1)l ≡ x2de.x2(p−1)(q−1)(−l) ≡ x2de.1−l ≡ cd ≡ x1 (mod pq).
Vậy cd (mod pq) là nghiệm duy nhất của (**)
Trường hợp 2:Giả sử gcd(c, pq) = pq Khi đó (**) trở thành xe ≡ 0 (mod pq) Từ
gcd(c, pq) = pq suy ra c ≡ 0 (mod pq) Do đó cd ≡ 0 (mod pq) Vậy x ≡ cd ≡ 0 (mod pq)
là nghiệm của (**)
Giả sư xe ≡ 0 (mod pq) còn có nghiệm u Khi đó pq | ue hay pq | u Do đó u ≡ 0 (mod pq) Vậy trong trường hợp này x ≡ 0 ≡ cd (mod pq) là nghiệm duy nhất củaphương trình xe ≡ 0 (mod pq)
Trường hợp 3:Giả sử gcd(c, pq) = p Từ gcd(c, pq) = p, ta có p | c nhưng q -c Do đó cd
là nghiệm đúng của (**), bởi vì
cde= c1+(p−1)(q−1)k ≡ c.c(p−1)(q−1)k (mod pq).
Do gcd(c, pq) = p nên gcd(c, q) = 1 Bởi định lý Fermat nhỏ, ta có cq−1 ≡ 1 (mod q) và
c(q−1)(p−1)k ≡ 1 (mod q) Vì vậy q | (c(q−1)(p−1)k− 1) Do đó pq | c.(c(q−1)(p−1)k− 1) hay
c.(c(q−1)(p−1)k− 1) ≡ 0 (mod pq) Từ đó c1+(q−1)(p−1)k− c ≡ 0 (mod pq) và cde = cde≡ c (mod pq) Vậy cd là nghiệm đúng của (**) và x1 ≡ c d (mod pq) là nghiệm của (**).Giả sử (**) còn có nghiệmx2, tức làxe2≡ c (mod pq) Do đóxde2 ≡ c d ≡ x1 (mod pq).Mặt khác pq | (xe2− c) và do đó p | (xe2− c) Vì vậy p | xe2 và p | x2 (vì p | c) Do q- x2
nên lập luận tương tự như đã làm vớicđể có đượccde≡ c (mod pq) Ở đây, ta cũng có
xde2 ≡ x2 (mod pq) và do đó x2 ≡ x1 (mod pq) Vậy trong trường hợp này, cd (mod pq)
là nghiệm duy nhất của (**)
Trường hợp 4:Giả sử gcd(c, pq) = q Lập luận tương tự trường hợp 3 với p và q đổi vaitrò cho nhau, ta cũng có x ≡ cd (mod pq) là nghiệm duy nhất của (**)
Từ quá trình chứng minh định lý trên và kết quả ở Định lý 2.1.1 cùng với nhậnxét rằng nếu gcd(e, (p − 1)(q − 1)) = 1 thì gcd(e,(p−1)(q−1)g ) = 1 với g = gcd(p − 1, q − 1),
ta có thể thay d bởi d0 thỏa mãn d0e ≡ 1 (mod (p−1)(q−1)g ) Khi đó nghiệm duy nhấtcủa (**) là cd ≡ cd0 (mod pq) Ta sẽ minh họa kết quả trên bằng một ví dụ đơn giảnsau
Ví dụ 2.1.4 Giải phương trình : x17389 ≡ 43927 (mod 64349)
Trang 10Lời giải Ta biết N = 64349 = 229.281 và p = 229, q = 281, c = 43927, e = 17389.Hơn nữa gcd(e, (p − 1)(q − 1)) = gcd(e, 228.280) = 1 Vì vậy ta sẽ tính được d ≡ 53509 (mod 228.280) ( hoặc d0 ≡ 5629 (mod 15960) ) Do đó nghiệm của phương trình trên là
x ≡ 4392753509≡ 14458 (mod 64349) ( hoặc x ≡ 439275629 ≡ 14458 (mod 64349))
Ở ví dụ trên, nếu ta tìm nghiệm dựa vào việc tính d0 thì chỉ mất 80% của số bướctính để tìm nghiệm thông qua việc tính d
Bob và Alice gặp phải vấn đề thường lệ của việc bảo mật các thông tin nhạy cảmtrên một kênh giao tiếp không an toàn Ta biết có những cách khác nhau để giảiquyết vấn đề này Ví dụ như trao đổi khóa Diffie-Hellman và hệ mật khóa công khaiElgamal mà độ bảo mật dựa trên độ khó của bài toán logarit rời rạc
Trong phần này ta sẽ trình bày về hệ mật khóa công khai RSA mà độ bảo mậtdựa vào độ khó của việc giải phương trình xe ≡ c (mod N )trong đó N là tích của hai
số nguyên tố phân biệt
Tạo khóaChọn hai số nguyên tố phân biệt p và q
Chọn số mũ e sao cho
gcd(e, (p − 1)(q − 1)) = 1.
Công khai cặp (N, e) với N = pq
Mã hóa
Chọn thông điệp m cần mã hóa
Sử dụng khóa(N, e) của Bob
Ở bảng trên, Bob chọn 2 số nguyên tố p 6= q, khóa công khai là cặp (N, e) với
N = p.q và gcd(e, (p − 1)(q − 1)) = 1 Alice chọn thông điệp mà cô ấy muốn gửi cho Bob
và biến nó thành một số nguyên m nằm giữa 1 và N mà ta gọi là bản hiện, mã hóa
Trang 11m bởi c ≡ me (mod N ), số nguyên cđược gọi là bản mã ứng với bản hiện m Cô ấy sẽgửi c cho Bob Do Bob biếtp và q nên để giải mã c, đơn giải Bob chỉ cần giải phươngtrình xe ≡ c (mod N )và khôi phục lại bản hiện m và biết được thông diệp của Alice.Eve có thể biết c, N, e nhưng trừ khi cô ấy biết phân tích của N, tức là biết p và q
hoặc biết giá trị của (p − 1)(q − 1) nếu không việc giải phương trình xe ≡ c (mod N )
đối với cô ấy là không dễ dàng
Chúng ta mô tả hệ mật RSA với các số nhỏ làm ví dụ Tất nhiên ví dụ này không
đủ tốt bởi nó quá dễ để cho Eve tìm được các thừa số trong phân tích của N, để đảmbảo tính bảo mật cho hệ mật RSA, ta thường sử dụng những giá trị N lớn (có thể cóđến hàng trăm chữ số)
Trang 12hiện hiệu quả hơn nếu số mũ mã hóa là nhỏ Tương tự, giải mã sẽ hiệu quả hơn nếu
số mũ giải mã là nhỏ Tất nhiên Bob có thể chọn cả hai giá trị e, d là nhỏ trong cùngmột lần tạo khóa với e, d thỏa mãn
de ≡ 1 (mod ((p − 1)(q − 1))).
Tất nhiên, Bob có thể chọn e = d = 1 nhưng khi đó m = c Do đó e = 1 là ý tưởngrất tệ Trong khi đó e = 2 không thỏa mãn điều kiện gcd(e, (p − 1)(q − 1)) = 1 vì mộttrong hai số p, q là lẻ Giá trị tốt có thể chọn làe = 3, với e = 3thì độ bảo mật tương
tự một giá trị lớn hơn của e nhưng có một vài điều lo lắng rằng khi e là quá nhỏthì giá trị c ≡ me (mod N ) có thể nhỏ hơn N Khi đó không xảy ra rút gọn modulo
N và m có thể được tìm ra bằng cách tính căn bậc e của c Do đó ta thường lấy
e = 216+ 1 = 65537 Khi đó để tính lũy thừa mũ e, ta chỉ mất 16 phép bình phương
và một phép nhân
Chú ý 2.2.2 Nếu Eve biết được giá trị của (p + q) thì từ đẳng thức (p − 1)(q − 1) =
pq − (p + q) + 1 = N − (p + q) + 1 cho phép Eve tính được (p − 1)(q − 1) và ngược lại.Hơn nữa, nếu cô ấy biết (p + q) thì cô ấy có thể biết giá trị cụ thể của p và q bằngcách giải phương trình x2− (p + q) + pq = 0 Do đó việc tìm giá trị của (p − 1)(q − 1)
so với việc tìm giá trị của p và q là không dễ dàng hơn Nhưng chú ý rằng những
gì Eve cần làm là giải bản mã c từ phương trình xe ≡ c (mod N ) Nếu cô ấy có mộtthuật toán để giải phương trình này mà không cần biết phân tích của N hoặc giá trị
(p − 1)(q − 1) thì cô ấy có thể giả mã c Nhưng được biết cho đến nay chưa có ai cóthể chỉ ra tồn tại một thuật toán như vậy
Chú ý 2.2.3 Lưu ý rằng Bob chỉ nên sử dụng một số mũ mã hóa duy nhất Giả sửBob sử dụng cùng lúc hai số mũ mã hóa e1, e2 để mã hóa cùng một m Khi đó ta cóhai bản mã
c1 ≡ me1 (mod N ), và c2 ≡ me2 (mod N ).
Do Eve biết c 1, c 2, e 1, e 2, N và giả sử gcd(e 1 , e 2 ) = e 1 u + e 2 v Khi đó Eve có
cu1.cv2 ≡ me1 u me2 v ≡ me1 u+e 2 v ≡ mgcd(e1 ,e 2 ) (mod N ).
Nếu gcd(e1, e2) = 1 thì Eve có được m
Theo thứ tự tạo một cặp khóa RSA, Bob cần chọn 2 số nguyên tố phân biệt đủlớn Vì vậy, Bob phải đối mặt với bài toán tìm các số nguyên tố lớn Chính xác hơn,Bob cần một cách để kiểm tra một số lớn được chọn là số nguyên tố hay hợp số Ví
dụ như Bob muốn biết số
n = 3198793773747935332620068643713101490952335301
có là số nguyên tố hay không? Đầu tiên Bob thử tìm các thừa số nguyên tố nhỏ của
n nếu có , nhưng Bob không tìm thấy bất kỳ số nguyên tố nào nhỏ hơn 1 triệu là ướccủa n Cách khác, Bob tính
2n−1 ≡ 1281265953551359064133601216247151836053160074 (mod n).
Trang 13Điều này chỉ ra n không phải số nguyên tố mặc dù Bob không biết bất kỳ một ướcnào củan Trước khi tiếp tục câu chuyện tìm kiếm số nguyên tố lớn của Bob, ta nhắclại định lý Fermat nhỏ.
Định lý 2.3.1 Nếu p là một số nguyên tố thì ap ≡ a (mod p), với mọi a ∈Z.
Từ Định lý 2.3.1, nếu tồn tại a ∈ Z sao cho an 6≡ a (mod n) thì n là hợp số Trongtrường hợp này, ta nóia là một bằng chứng hợp số dạng Fermat củan, hay nói gọn làbằng chứng Fermat Thật đáng tiếc, ngay cả khi n không có một bằng chứng Fermatnào cũng không đủ để kết luận n là số nguyên tố Ví dụ n = 561 thì a561 ≡ a (mod n),với mọi a ∈ Z Nhưng từ n = 561 = 3.11.17 chỉ ra rằng n không phải số nguyên tố.Tuy vậy, để đánh giá khả năngn là một số nguyên tố, ta có thể thử các giá trị a = aj,
với mọi j = 1, 2, , k. Nếu có bất kỳ một trong số các aj là bằng chứng Fermat của
n thì n là hợp số Ngược lại nếu n không có bất cứ một bằng chứng Fermat nào thì
n có khả năng là một số nguyên tố
Một hợp số mà không có bất kỳ bằng chứng Fermat nào được gọi là số Carmichael.Mặc dù số Carmichael khá hiếm nhưng người ta đã chỉ ra được có vô hạn số như vậy.Phương pháp kiểm tra số nguyên tố dựa vào định lý Fermat nhỏ không hiệu quả đốivới các số này, do đó Bob cần một công cụ mạnh hơn nữa để kiểm tra tính nguyên
tố của một số nguyên bao gồm cả số Carmichael
Mệnh đề 2.3.2 Cho p là một số nguyên tố lẻ và viết p − 1 = 2k.q (với q lẻ) Cho
a ∈Z thỏa mãn gcd(a, p) = 1 Khi đó một trong hai điều sau là đúng
a) aq ≡ 1 (mod p)
b) Một trong các số aq, a2q, , a2k−1.q sẽ đồng dư với −1 (mod p)
Chứng minh Do gcd(a, p) = 1 nênap−1≡ 1 (mod p) Do đó cấp của a trong nhóm cácphần tử khả nghịch modulo p phải là ước của 2k.q Vì vậy, trong danh sách
aq, a2q, , a2k−1.q, a2k.q (∗ ∗ ∗)
phải có ít nhất một giá trị đồng dư với 1 modulo p Giả sử aq 6≡ 1 (mod p) Khi đó,trong danh sách (∗ ∗ ∗), số sau là bình phương của số đứng trước Gọi ki là số nhỏnhất để a2kiq ≡ 1 (mod p), (1 ≤ ki≤ k) Khi đó từ
(a2ki−1q)2 ≡ 1 (mod p) và a2ki−1q 6≡ 1 (mod p),
ta có a2ki−1.q ≡ −1 (mod p) Vậy một trong các số aq, a2q, , a2k−1.q phải đồng dư với
−1 (mod p)
Mệnh đề trên cho ta một cách kiểm tra tính nguyên tố của một số n-lẻ được chotrong bảng sau
Trang 14Đầu vào:Số nguyên n, số nguyên a.
1 Nếu n chẵn hoặc 1 < gcd(a, n) < n, trả kết quả :n là hợp số
Định nghĩa 2.3.3 Cho n là một số lẻ và viết n − 1 = 2k.q với q lẻ và số nguyên a
thỏa mãn gcd(a, n) = 1, a được gọi là một bằng chứng Miller-Rabin nếu cả hai điềusau là đúng
a) aq 6≡ 1 (mod n)
b) a2iq 6≡ −1 (mod n), với mọi i = 0, 1, , k − 1.
Mệnh đề 2.3.4 Cho n là một hợp số lẻ Khi đó có ít nhất 75% các số giữa 1 và n − 1
là bằng chứng Miller-Rabin cho n
Bây giờ, Bob muốn kiểm tra tính nguyên tố của một số n (lẻ) Anh ấy thử với 10
giá trị khác nhau của a Nếu có bất kỳ giá trị nào của a là bằng chứng Miller-Rabin(bằng chứng M-R) thìn chắc chắn là hợp số Ngược lại, nếu không có giá trị nào của
a là bằng chứng M-R thì từ Mệnh đề 2.3.4, khi n là hợp số , xác xuất để cả 10 lầnđều không cho ta bằng chứng M-R không quá (25%)10 (cỡ 10−6) Tương tự, xác suất
để sau k lần thử không chỉ ra được bằng chứng M-R của n là (25%)k, ta có thể nóinếu sau k lần thử mà không chỉ ra được bằng chứng M-R thì xác suất để n thực sự
Vậy a = 2 là một bằng chứng M-R của 561, do đó 561 là hợp số Lưu ý rằng a = 2
không là bằng chứng Fermat của 561 (số carmichael)
Ví dụ 2.3.6 Cho n = 172947529 Khi đó n − 1 = 23.21618441 Với a ∈ {17, 3, 23} ta cóthể kiểm tra được rằng a = 3, a = 17 không là bằng chứng M-R của n nhưng a = 23
là bằng chứng M-R của n Do đó n = 172947529 là hợp số
Trang 152.3.1 Phân bố của tập số nguyên tố
Định nghĩa 2.3.7 Cho số nguyên n ≥ 2, ta định nghĩa
π(n) = {số các số nguyên tố từ 2 đến n}.
Ví dụ 2.3.8 π(10) = 4, vì các số nguyên tố từ 2 đến 10 gồm 4 số là 2, 3, 5, 7
Định lý 2.3.9 (Định lý số nguyên tố)
lim n→∞
π(n) n ln(n)
2013 ln(2 2013 ) ≈ [21013.53]
số nguyên tố Định lý 2.3.9 nói rằng, vớin đủ lớn, khi ta chọn 1số nguyên từ 1đến n
thì tỷ lệ để ta chọn được một số nguyên tố là xấp xỉ ln(n)1 Vì vậy, ta có nói rằng việcchọn một số ngẫu nhiên N thì xác suất N là số nguyên tố là ln(N )1 Lưu ý rằng một
số N hoặc là một số nguyên tố hoặc là hợp số, phát biểu trên muốn mô tả tỷ lệ tìmđược số nguyên tố xung quanh N Ví dụ khi ta chọn x thuộc N2 đến 3N2 , xác suất để
x là số nguyên tố khoảng ln(N )1
Ví dụ 2.3.11 Ta minh họa trong ví dụ này việc tìm kiếm số nguyên tố có khoảng
1024 bit Phát biểu trên nói rằng xác suất để một số N ≈ 21024 là số nguyên tố là
1 ln(2 1024 ) =
Trang 16hay N = 2310n + 1139 Khi đó N không chia hết cho 2, 3, 5, 7, 11 Xác suất để
4, 8 ln(N ) ≈ 0.67%.
Nghĩa là ta chỉ cần thử khoảng 150 số ngẫu nhiên quanh 22014 có dạng 2310n + 1139
sẽ có cơ hội có được một số nguyên tố Dùng "Miller-Rabin test" với 1000 giá trịngẫu nhiên của N để kiểm tra tính nguyên tố của mỗi số dạng 2310n + 1139 Với
22013≤ n ≤ 2 2013 + 1000 hay n = 22013+ j với 0 ≤ j ≤ 1000, kết quả là tìm được 12 giátrị của j Cụ thể {41, 148, 193, 251, 471, 585, 606, 821, 851, 865, 910, 911} có khả năng làmcho N = 2310(21013+ j) + 1139 là số nguyên tố với xác xuất cao Số nhỏ nhất trong số
đó là 2310(21013+ 41) + 1139 có 308 chữ số
2.3.2 Chứng minh tính nguyên tố và kiểm tra xác suất Versus
Thuật toán Miller-Rabin là một thuật toán mạnh và tiện lợi cho việc tìm kiếm các
số nguyên lớn có khả năng là số nguyên tố Ta biết rằng nếu một số n là hợp số thì
n có thể có rất nhiều bằng chứng Miller-Ranbin Sau chừng 50 đến 100 lần thử nếukhông chỉ ra được bằng chứng Miller-Rabin thì có thể gần chắc rằng n là số nguyên
tố Tuy nhiên có sự khác biệt giữa "gần như chắc chắn" và "chắc chắn" Nếu Bobmuốn kiểm tra chính xác rằng n là một số nguyên tố, về nguyên tắc, Bob phải kiểmtra các giá trị màn không chia hết cho nó, tức là kiểm tra các số1, 2, 3, , [ √
n] Nếukhông có giá trị nào là ước của n thì chắc chắn n là số nguyên tố Tuy nhiên nếu n
lớn cỡ 21000 thì số lần thực hiện các bước tính sẽ là một bội của √n, tức là θ( √
n) đểhoàn thành (chạy với thời gian mũ) Nhưng ta mong muốn có một thuật toán chứngminh tính nguyên tố chạy trong thời gian đa thức
Nhắc lại giả thiết Riemann:Hàm số Zeta-Riemann ζ(s) được định nghĩa bởi
Người ta đã chứng minh được ζ(s) = Y
π(x) =
Z x 2
dt ln(t) + θ(
√
x ln(x)).
Công thức này mạnh hơn định lý về số nguyên tố, khi x lớn ta suy ra π(x) ∼ ln xx Trong suốt khoảng 150 năm nay, kể từ khi phát biểu vẫn chưa có ai chứng minh đượcgiả thiết này
Trang 17Mệnh đề 2.3.12 Nếu giả thiết Riemann là đúng thì mỗi hợp sốn có một bằng chứngMiller-Rabin a thỏa mãn
a ≤ 2(ln( n ))2.
Ứng dụng 2.3.13 Chúng ta có hai trường hợp sau
1 Nếu tồn tại a với a ≤ 2(ln( n ))2 là bằng chứng Miller-Rabin thì n là hợp số
2 Nếu không tồn tại a với a ≤ 2(ln( n ))2 là bằng chứng Miller-Rabin thì n là sốnguyên tố
Thuật toán AKS chỉ ra rằng nếu cho một số > 0 tùy ý, có một thuật toán xácđịnh liệu N có là số nguyên tố hay không trong thời gian không quá O(ln(N ))6+)
bước Thực tế thuật toán này chậm hơn nhiều so với thuật toán Miller-Rabin Hầuhết mọi người sẽ chấp nhận một số nguyên n là số nguyên tố nếu sau khoảng 50đến
100 phép thử các giá trị của a theo cách kiểm tra Miller-Rabin mà không chỉ ra đượcmột bằng chứng Miller-Rabin nào của n
Cho một số nguyên dương N, N = p.q với p, q là các số nguyên tố Công việc củaEve là tìm ra các số p, q Chú ý rằng nếu có số nguyên L thỏa mãn
Nhờ quan sát của Pollard rằng nếu p − 1 phân tích được thành tích các số nguyên
tố nhỏ thì rất có thể p − 1 là ước của n! Điều này gợi ý cho Eve thử các số L códạng L = n! Trong thực hành, Eve có thể khởi đầu với việc chọn a = 2 hoặc mộtvài giá trị dễ tính toán Nếu gcd(an! − 1, N ) = 1 thì ta thay n! bởi (n + 1)! và nếu
gcd(an!− 1, N ) = N thì xem như ta không may mắn (lúc này dù có thử với L = (n + 1)!
cũng cho kết quả như vậy) Nhưng Eve có thể thay giá trị khác cho a và bắt đầu làmlại
Trang 18Một vấn đề gặp phải trong quá trình tính an! là ngay cả khi gắn cho a giá trị nhỏchỉ bằng 2, thì với n lớn, an! có thể rất lớn Thay vì làm việc với các số lớn như vậy,
ta có thể rút gọn chúng theo moduloN và chỉ phải làm việc với các số không lớn quá
N bởi nhận xét nếu aL ≡ h (mod N ) và gcd(aL− 1, N ) = p thì gcd(h − 1, N ) = p
Ta mô tả thuật toán phân tích thừa số p − 1 của Pollard trong bảng sau với a = 2
Đầu vào:số nguyên N được phân tích
1 Đặt a = 2 ( hoặc giá trị thuận tiện nào đó)
2 Vòng j = 2, 3, 4, . ( tăng tới một giới hạn nhất định)
3 Đặt a :≡ aj (mod N )
4 Tính d = gcd(a − 1, N )
5 Nếu 1 < d < N thì thành công, trả về giá trị d
6 Tăng j, quay lại ở bước 2
Để tính được an! (mod N ), ta mất không quá 2n log2(n) bước Đồng thời cũng tínhđược ak! (mod N ) với k = 1, 2, , n Để thêm hiệu quả, đôi khi ta có thể chọn một số
k thích hợp và bắt đầu tính từ gcd(ak!− 1, a) Ví dụ sau minh họa cho điều này
Chú ý 2.4.2 Ta không bàn về khả năng thành công của phương pháp này Tuynhiên dễ thấy răng phương pháp này hiệu quả nếu ít nhất một trong hai sốp − 1 hoặc
q − 1 có phân tích là tích các số nguyên tố nhỏ với số mũ nhỏ Điều này sẽ dễ dàngcho Bob và Alice tránh mối nguy hiểm từ phương pháp phân tích p − 1 của Pollardkhi tạo khóa RSA Đơn giản là kiểm tra những số bí mật p và q và đảm bảo rằng cả
p − 1 và q − 1 đều không có phân tích là tích các số nguyên tố nhỏ
Định nghĩa 2.4.3 Một số nguyên mà các thừa số nguyên tố của nó nhỏ hơn hoặcbằng B được gọi là một số B-mịn
Ta sẽ nghiên các số B-mịn (hay B-phẳng, B-trơn ) ở các phần tiếp theo
Trang 192.5 Phân tích thông qua hiệu bình phương
Phương pháp này được biết dựa vào một trong những sự phát hiện đơn giản nhấttrong toán học là
Ví dụ 2.5.1 Với N = 203299, ta tạo một bảng số N + b2 với b từ 1 dến 100 nhưngkhông tìm thấy một giá trị chính phương nào của N + b2 Bây giờ, ta thử danh sáchvới 3N + b2 Cụ thể ta có
Trang 20N ) Trong các trường hợp khác, số nguyên tố nhỏ nhất là O(N )α với
α < 1/2 Giả sử chúng ta có thể tìm thấy nhiều hoặc ít các giá trị ngẫu nhiên a, b
thỏa mãn a2 ≡ b 2 (mod N ) Cơ hội trong việc tìm kiếm phân tích không tầm thườngcủa N khi tính gcd(N, a − b) là bao nhiêu?
Ta biết rằng nếu (a − b)(a + b) = a2− b2 = kN = k.p.q với số nguyên k nào đó, thì
p và q là ước của ít nhất một trong hai số (a − b) hoặc (a + b) Ta sẽ thành công nếu
Trang 21(a − b) chỉ chia hết cho một trong hai số p hoặc q mà không chia hết cho số còn lại.Điều này xảy ra với xác suất 50%, nghĩa là không mất quá nhiều lần thử.
Ta sẽ phát triển phương pháp ba bước một cách hợp lý hơn như sau
Bước 1: Ta lập một danh sách các số a1, a2, , ar thỏa mãn (ai)2 ≡ ci (mod N ),trong đó ci là các số nguyên dương nhỏ hơn N và là tích của t số nguyên tố nhỏ đầutiên (cố định thứ tự tăng dần) {p1, p2, , pt}
r
X
i=1
e ij u i ) j
do đó ta cần chọn (u1, u2, , ur) sao cho số mũ của pj trong phân tích của
trong đóeij là số mũ củapj trong phân tích của ci được rút gọn theo modulo2 Chúng
ta có thể sử dụng phương pháp khử Gauss để giải hệ thặng dư 2.7 trên trường F2
Ví dụ 2.5.4 ChoN = 9788111là số cần phân tích Khi đó ta tìm kiếm các số nguyên
a với tính chất a2 (mod N ) là các số 50-mịn Các số nguyên tố nhỏ hơn 50 gồm 15 số
Trang 23đó cho ta phân tích không tầm thường của N là N = 9788111 = 2741.3571 Cả hai số
2741 và 3571 đều là các số nguyên tố Do đó đây là phân tích đầy đủ của N thànhtích các thừa số nguyên tố
Trang 24Chú ý 2.5.5 Ở ví dụ trên, hệ phương trình tuyến tính thuần nhất có tất cả 15
phương trình Trong nhiều trường hợp, số các số nguyên tố p1, p2, , pt có thể rấtlớn, cỡ hàng nghìn,hàng triệu số, khi đó hệ phương trình tuyến tính thuần nhất ở 2.7
có tới hàng nghìn, hàng triệu phương trình Chúng ta sẽ rất khó để giải tổng quát
hệ này Tuy nhiên số các số nguyên tố xuất hiện trong phân tích của c i là giải rác.Điều này muốn nói rằng hầu hết các số mũ của các số nguyên tố trong biểu diễn của
ci là 0, tức là ma trận hệ số sẽ chứa rất nhiều số 0 Thực tế có một kỹ thuật đặc biệt
để giải hệ phương trình tuyến tính dạng này hiệu quả hơn nhiều so với phương phápkhử Gauss thông thường Có một phỏng đoán rằng nếu một số ci là tích của các sốnhỏ hơn B thì nó sẽ là tích của các lũy thừa của khoảng ln(ci )
ln(B) các số nguyên tố phânbiệt
2.6.1 Số mịn
Định nghĩa 2.6.1 Cho B ∈ Z, B ≥ 2 Khi đó, một số nguyên n được gọi là một số
B-mịn nếu mọi thừa số nguyên tố trong phân tích của nó đều nhỏ hơn hoặc bằng B.Sau đây, nếu không nói gì thêm, ta luôn coi một số B-mịn là số lớn hơn 1
Ví dụ 2.6.2 Một vài số đầu tiên là 5 mịn và 5 không mịn
Nếu ta đặt L(x) = e
√ (ln x)(ln ln x) và B = L(x)c với 0 < c < 1 thì từ Định lý 2.6.4, ta
có ngay hệ quả sau
Trang 25Hệ quả 2.6.6 Cho c bất kỳ thỏa mãn 0 < c < 1 Khi đó
q
ln x
ln ln x ta có
ψ(x, L(x)c) = x.u−u(1+o(1)) = x.L(x)−2c1(1+o(1))
Định nghĩa 2.6.7 Cho f (x) và g(x) là các hàm biến x nhận giá trị dương Ký hiệu
f (x) = O(g(x)) hoặc f (x) g(x) nếu tồn tại hằng số dương c và C sao cho
Trang 26Mệnh đề 2.6.10 ChoL(x) = e
√
ln x ln ln x vàN là một số nguyên lớn ĐặtB = L(N )√12.Khi đó
1 Chúng ta cần kiểm tra khoảng L(N )
√ 2
giá trị ngẫu nhiên modulo N để tìm được
π(B) số B-mịn
2 Chúng ta cần kiểm tra khoảng L(N )
√ 2
giá trị ngẫu nhiên dạng a2 (mod N ) đểtìm được đủ số B-mịn cho phân tích N
Chứng minh Xác suất để chọn một số ngẫu nhiên modulo N là B-mịn là ψ(N,B)N Đểtìm được π(B) số B-mịn, cần khoảng ψ(N,B)π(B)
N
số Ta mong muốn ψ(N,B)π(B)
N
nhỏ Khi B códạng B = L(N )c, ta muốn tìm kiếm giá trị thích hợp của cđể
π(B) ψ(N,B) N
c ) ψ(N, L(N )c)/N
−1 2c
c ln(L(N )c).L(N )
−1 2c
giá trị ngẫu nhiên modulo N để tìm được π(B) số B-mịn
Chú ý 2.6.11 Chúng ta có nhiều cách khác nhau để giảm bớt thời gian tìm kiếmthay vì sử dụng ngẫu nhiên các giá trị của a để tính a2 (mod N ) Ta có thể lựa chọn
a chỉ lớn hơn √N một chút, thìa2 (mod N ) là O( √
N ) và có nhiều khả năng là B-mịnhơn là những số O(N ) Tính toán lại mệnh đề trên, ta thấy chỉ cần kiểm tra khoảng
L(N ) số ngẫu nhiên dạng a2 (mod N ) với a gần với √N Điều này tiết kiệm đáng kể
so với L(N )
√
2
.Với mỗi số ngẫu nhiên mà ta chọn, để kiểm tra xem số đó liệu có là B-mịn không
Ta chia số đó cho các số nguyên tố nhỏ hơn B cho đến khi kết quả phép chia là 1.Tức là xấp xỉ cỡ π(B)lần chia thử với mỗi giá trịa2 (mod N ) để kiểm tra tính B-mịncủa nó, và ta phải thử với khoảng L(N )
Trang 27L(N )c thì c nên được chọn là √1
2.Phương pháp tiếp cận đầu tiên để tìm số B-mịn là tìm phân số ab ≈ √kN với
k = 1, 2, 3, thì a2 ≈ b 2 kN ≡ 0 (mod N ) Khi đó a2 (mod N ) là một số nhỏ, và cónhiều cơ hội sẽ là B-mịn
Một cách tiếp cận khác nhanh hơn trong thực hành và có thể áp dụng cho cảnhững giá trị lớn hơn của a2 modulo N, mà ta gọi là sàng, được biết đến là thuậttoán nhanh nhất để phân tích một số N = p.q lớn tới cỡ 2350 Một phương pháp phứctạp hơn được gọi là sàng trường số có thể áp dụng cho cả những giá trị N lớn hơn
2450
Trước khi đi vào mô tả dạng đơn giản của sàng bậc hai, ta bắt đầu với việc tìmcác số B-mịn nhỏ hơn x mà không quan tâm liệu các số đó có dạng a2 (mod N ) haykhông
Để làm điều đó, ta mô phỏng theo sàng Ératosthènse, đây là một phương pháp có
từ thời cổ đại Hy Lạp dùng để tìm ra các số nguyên tố
Đầu tiền ta lập một danh sách các số nhỏ hơn hoặc bằng x rồi sàng như sau.Vòng 1:Sàng bởi số nguyên tố 2, nghĩa là ta sẽ gạch bỏ mọi số nguyên trong danhsách là bội của 2 Số nhỏ nhất không bị gạch là 3
Vòng 2:Sàng bởi số nguyên tố 3, nghĩa là ta sẽ gạch bỏ mọi số nguyên trong danhsách là bội của 3 Số nhỏ nhất không bị gạch là 5
Vòng 3:Sàng với vố nguyên tố 5, gạch bỏ mọi số nguyên lớn hơn 5 mà là bội của 5
Số nhỏ nhất không bị gạch là 7
Các vòng tiếp theo ta sàng bởi số nguyên nhỏ nhất không bị gạch ở vòng trước đó
Ví dụ như sau vòng 3, ta được 7 là số nhỏ nhất không bị gạch Do đó 7 không chiahết cho mọi số nguyên tố nhỏ hơn nó Vậy 7 là số nguyên tố kế tiếp mà ta sẽ dùng
để sàng ở vòng 4
Ví dụ 2.6.12 Ta mô tả quá trình sàng các số nhỏ hơn x = 100 bởi tất cả các sốnguyên tố nhỏ hơn 10 Các số sau tất cả các lần sàng mà không bị gạch sẽ là tất cảcác số nguyên tố nhỏ hơn 100
Trang 28Nhận xét rằng có vài số bị gạch nhiều lần khác nhau Ví dụ như các số 6, 12, 18bịgạch bỏ 2 lần Một lần vì nó là bội của 2 và lần còn vì nó là bội của 3 Tương tự các
pα với p ≤ B và α ≥ 2 Tuy nhiên, mục tiêu của ta không phải là lập một danh sáchcác số B-mịn Những gì chúng ta cần là tạo một danh sách các số dạng a2 (mod N )
k
+ 1.
F (a), F (a + 1), F (a + 2), , F (b). (2.8)
Ý tưởng của chúng ta là tìm các số B-mịn trong danh sách 2.8 Để làm điều đó,
ta sàng các số trong danh sách này bởi các số nguyên tố nhỏ hơn B Số nào sau cáclần sàng có thương là 1 sẽ là các số B-mịn Chúng ta cũng cần phải lựa chọn B phùhợp để có thể tìm đủ số B-mịn cần thiết cho việc phân tích N
Định nghĩa 2.6.13 Tập hợp các số nguyên tố nhỏ hơn hoặc bằng B được gọi làmột B-cơ sở thừa số
Giả sử plà một số nguyên tố trong B-cơ sở thừa số Khi đó số nào trong danh sách2.8 sẽ chia hết cho p, hay giá trị nào của T sẽ thỏa mãn