1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khoá luận tốt nghiệp phân tích thừa số nguyên tố và ứng dụng trong mật mã

81 752 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 135,12 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nó cho ta biết điều gì sẽ xảy ra nếu thay p bằng số m không phải là số 1.5 Phân tích thừa số qua hiôu của các bình phương 2 Số trơn, sàne và xâv dưne auan hê cho DhéD nhân tử hoá... Tron

Trang 1

Trần Vĩnh Đức Đặng Kiều Trang K37-sp Toán

TRƯỜNG ĐẠI HỌC sư PHẠM HÀ NỘI 2 KHOA TOÁN

-0O0 -KHÓA LUẬN TỐT NGHIỆP

PHÂN TÍCH THỪA SỐ NGUYÊN Tố VÀ ỨNG DỤNG TRONG

MẬT MÃ

Chuyên ngành: TOÁN ỨNG DỤNG

Giảng viên hướng dẫn: Sinh viên: Lớp:

HÀ NỘI, 5/2015

Trang 2

LỜI CẢM ƠN

Bài khóa luận này được hoàn thành dưới sự hướng dẫn nhiệt tình của thầy giáo T.s Trần Vĩnh Đức.

Qua đây em xin gửi lời cảm ơn sâu sắc tới các thầv cô trong tổ Toán ứng dụng và các thầy cô trong khoa Toán

trường ĐHSP Hà Nội 2 đã giúp đỡ em trong quá trình học tập đổ thuận lợi cho việc nghiên cứu Đặc biệt, em

xin gửi lời cảm ƠI1 chân thành tới thầv giáo T.s Trần Vĩnh Đức người đã dành cho em sự hướng dẫn nhiệt

tình, chu đáo và chỉ bảo cho em trong suốt quá trình học tập nghiên cứu và thực liiệĩi khóa hiận.

1 đã hết sức cố gắng, nhưng do dây là lần đầu tiên làm quen với viộc nghiên cứu klioa học và do năng lực còn hạn chế nên khó tránh khỏi những sai sót Em mong muốn nhận được sự chỉ bảo, đóng góp của quí thầy

cô để cho bài khóa luận được tốt hơn.

Em xin chân thành cảm ơn!

Hà Nội, tháng 05 năm 20í

5 Sinh viên

Đặng Kiều Trang

Trang 3

LỜI CAM ĐOAN

Sau một thời gian nghiên cứu với sự cố gắng, nỗ lực của bản thân cùng sự hướng dẫn nhiệt tình chỉ bảo của thầv giáo T.s Trần Vĩnh Đức em đã hoàn thành bài khóa luận của mình.

Em xin cam đoan bài khóa luận là do bản thân nghiên cứu cùng với sự hướng dẫn của thầy giáo T.s Trần Vĩnh Đức không hồ trùng với bất cứ đồ tài nào.

Hà Nội, tháng 05 năm 20í

5 Sinh viên

Dặng Kiều Trang

Trang 4

LỜI CẢM ƠN

MỤC LỤC

Lời cảm ớn

Lời cam đoan

1 Phân tích thừa số nguvẽn tố và ứng dung trong mât mã RSA

Kiểm tra tính nguyện tố

L á Thuât toán phép nhân tử hóa Pollard p-1

CHƯƠNG 1

PHÂN TÍCH THỪA SỐ NGUYÊN Tố VÀ ỨNG DỤNG TRONG MẬT

MÃ RSA

1.1 Công thức Euler

Phương pháp thay đổi khóa Diffie-Hellman và hệ thống mật mã khóa

công khai ElGamal đã nghiên cứu dựa trên thực tế thì nó rất dễ để tính lũy

thừa a n m o d p , n h ư n g r ấ t k h ó đ ể t ì m l ạ i c á c s ố I I1Ũ n n ế u

t a c h ỉ b i ế t g i á t r ị c ủ a a và a n mod p Một kết quả quan trọng mà

chúng ta sử dụng đe phân tích tính đúng đắn của Diffie-Hellman và

ElGamal là Định lý Fermat nhỏ,

a p ~ l = l(mod p) với mọi а ф 0 (mod p).

Định lý Fermat nhỏ thể hiện ruột tính chất tốt của các số nguyên tố Nó

cho ta biết điều gì sẽ xảy ra nếu thay p bằng số m không phải là số

1.5 Phân tích thừa số qua hiôu của các bình phương

2 Số trơn, sàne và xâv dưne auan hê cho DhéD nhân tử hoá

Trang 5

LỜI CAM ĐOAN

nguyên tố, tức là a m - ì = ị (moc[ p) c5 đúng không? Ta thấy câu trả lời là

không Trong phần này ta đi tìm hiểu khái quát tính đúng đắn của Định lý

Fermat nhỏ khi 1 7 1 — P Q là tích của hai số nguyên tố phân biệt, vì

đây là trường hợp quan trụng nhất trong các ứng dụng mã hóa

Ta bắt đầu với một ví dụ Với lũy thừa modun 15 sẽ làm như thế nào?

Nếu ta thựchiện bảng của lũy thừa bậc 2 và bậc 3 mod 15, chúng trông không thậtthú vị, nhưng nhiều lũy thừa bậc 4 đồng dư với 1 mod 15 Cụ thề, ta thấy rằng

a4 = 1 (mod 15) với a = 1,2, 4, 7, 8,11,13

và 14; a A Ф 1 (mod 15) với a = 3, 5, 6,

9,10 và 12

Vậy sự khác nhau giữa dãy các số 1, 2, 4, 7, 8, 11,13, 14 với dãy các số 3, 5, 6,

9, 10,12, 15 là gì? Ta thấy, mỗi số 3, 5, 6, 9, 10,12,15 đều có một bội chung 15, còn các số

1, 2,4, 7, 8, 11, 13, 14 là các số nguyên tố cùng nhau với 15 Điều này cho thấy

rằng một số phiên bản của Định lý nhỏ Fermat cũng đúng nếu số a là số nguyên t ố

c ù n g n h a u v ớ i m o d u n 7 7 2 , n h ư n g s ố m ũ k h ô n g n h ấ t t h i ế t p h ả i l à

7 7 7 , — 1

Cho m = 15 ta thấy số mũ đúng là 4 Tại sao là 4? Ta có the dễ dàng kiểm tra

với mỗi giá trị của a, nhưng có một thuật toán cụ thể sẽ tốt hơn Để chứng minh a4

= 1 (mod 15) ta cần kiểm tra 2 đồng dư thức

Trang 6

LỜI CẢM ƠN

đó là p — 1 là bội của 4 với p = 3 và p = 5 Bằng việc quan sát này, ta sẽ có các

công thức cơ bản làm nền tảng cho các hệ thống mật mã khóa công khai RSA

Định lí 1.1.1 (Công thức Euler cho pq) Cho p và q là 2 số nguyên tố khác nhau và cho

9 = UCLN(p — l,q — 1)

Khỉ đó

a(p-i)(9-i)/ỡ = I (mod pq) Va t h ỏ a m ã n ƯCLN(a, pq) = 1.

Đặc biệt, nếu p và q là các số nguyên tố lẻ, thì

a(p-i)(íf-i)/2 = I (mod pq) Va t h ỏ a m ã n ƯCLN(a, pq) = 1.

C h ứ n g m i n h Theo giả thiết ta thấy p ' / a và g : q — 1, nên ta có thể

tính ữ(p-i)(9-i)/ơ — ^ữ(p-i)^(9-i)/ơ y - ị Ị ^ q _ l ) / g là một số nguyên,

= 1 (mod p) vì 1 lũy thừa luôn bằng 1!

Tương tự, thay đổi vai trò của p và ợ, ta có

a(p-i)(?-i)/0 = I (mod q)

Phương pháp thay đối khóa Diffie-Hellman và hệ thống mật mã khóa công khaiElGamal phụ thuộc vào những khó khăn khi giải phương trình dạng

a x = b (mod p).

Trong đó a, b và p là các số đã biết, p là số nguyên tố, và X là ẩn Hệ thống mật

mã khóa công khai RSA mà chúng ta nghiên cứu trong phần tiếp theo phụ thuộcvào độ khó của việc giải phường trình dạng

x e = c (mod N),

Với e, c và N là các số đã biết và X là ẩn Nói cách khác, việc bảo mật của RSA dựa trên giả thiết là nó rất khó để tính căn bậc e modun N

Trang 7

LỜI CAM ĐOAN

Đây có phải là một giả thuyết hợp lý? Nếu modun N là số nguyên tố thì sẽ tương đối dễ dàng trong việc để tính căn bậc e modun N , như được trình bày trong

C h ứ n g m i n h N ế u c = 0 ( m o d p ) , t h ì X = 0 ( m o d p ) l à n g h i ệ m

d u y n h ấ t m à ta cần tìm Giả sử c ^ 0 (mod p) Đồng dư thức d e = 1 (mod p — 1) có nghĩa là tồn tại một số nguyên k sao cho

de = 1 + k(p — 1).

Trang 8

Như vậy X = c d là một nghiệm của x e = c (mod p).

Để chứng minh nghiệm đó là duy nhất, ta giả sử X ị và X 2 là hai nghiệm của đồng dư thức 11.1.21 Ta chỉ cần chứng minh z d e = z (mod z) với z bất kỳ, ta

Vậy Mệnh đề 11.1.21 cỏ nghiệm duy nhất Ví dụ

1.1.3 Giải đồng dư thức sau

4714 (mod 7919),

Với modun p = 7919 là số nguyên tố Theo Mệnh đề 11.1.21 đầu tiên ta

cần giải đồng dư thức 1583d = 1 (mod 7918).

Để tìm d ta sử dụng thuật toán Euclide mở rộng, ta tìm được d , = 5277

(mod 7981) Từ Mệnh đề 11.1.21 ta thấy

X = 47 1 45277 = 60 59 (mod 7919) là nghiệm của T1583 = 47 1 4 (mod

7919)

Mệnh đề I1.1.2Ỉ cho thấy rằng rất dễ để tính nghệm nếu modun p là một

số nguyên tố Trong trường hợp cho modun N là một hợp số thì sẽ có một

sự khác biệt rất quan trọng Nếu chúng ta biết phân tích N thì lại dễ dàng

để tính nghiệm Các mệnh đề sau đây trình bày phương pháp làm trong

trường hợp N — p q \ h tích của hai số nguyên tố Các trường hợp tổng

Trang 9

LỜI CAM ĐOAN

quát được để lại xem như Bài tập

Trang 10

Mệnh đề 1.1.4 Cho p và q là các số nguyên tố khác nhau và e > 1 thỏa mẫn

C h ứ n g m i n h Giả sử UCLN(c, pq) = 1, (làm tương tự cho các trường hợp khác) Chứng

minh của Mệnh đề 11.1.41 tương tự như phần chứng minh của Mệnh đề

11 1.21 nhưng thay vì sử dụng định lý Fermat nhỏ, ta sử dụng công thức Euler (Định ly

ITTTTTI)■ Các đồng dư thức d e = 1 (mod (p — l)(q — 1)) có nghĩa là tồn tại số nguyên

= ( u e ) d l ~ k (mod pq) sử dụng công thức Euler (Định lỳ ỊTỊTỊTỊ)

= c d (mod pq) vì u là nghiệm của (II.2Ị)

Do đó, tất cả nghiệm của (11.2p đều đồng dư với c d (mod pq), như vậy đó là nghiệm duy

Nhận xét 1.1.5 Mệnh đềII 1.41 đưa ra một thuật toán để giải X e = c(mod pq) Đầu tiên là

Trang 11

giải d e — l(mod (p — l)(q — 1)), rồi tính crf(mod pq) Ta có thể làm cho các tính toán

nhanh hơn bằng cách sử dụng một giá trị nhỏ hơn d Cho g = UCLN(p — 1, q — 1) và giả

sử ta giải đồng dư thức sau với d :

d e = 1 (mod (p~1^(q-1))

Từ công thức Euler (Định ly ỊTỊTỊTỊ) ta có ( Ạ p ~ l ^ q ~ l ^ g = 1 (mod pq) Do đó như trong

chứng minh của Mệnh đề 11-1.41 nếu ta viết d e = 1 + k ( p — l)(ợ — 1 ) / g , thì

với modun = 64 • 349 = 229 -281 là tích của hai số nguyên tố p = 229 và q = 281 Bước

đầu tiên là giải đồng dư thức

17389 = 1 (mod 63840),

63840) Sau đó, từ Mệnh đề 11.1.41 ta có

X = 43 9 1 253509 = 144 5 8 (mod 64349), là nghiệm của Ж17389 = 43 9 2 7 (mod 64349)

Ta có thể giảm đi một chút công việc bằng cách sử dụng các ý tưỏng được trình bày trong Nhận xét 11.1.51 Ta có

Trang 12

của X17389 = 14458 (mod 64349).

Chú ý rằng ta cũng có những nghiệm tương tự, nhưng ta chỉ cần nâng 43927 lên hìythừa 5629^, trong khi sử dụng Mệnh đề 11.1.41 yẽu cầu trực tiếp ta nâng 43927 lên lũythừa 53509^ Cách làm này tiết kiệm thời gian, mặc dù không phải là nhiều

1.2 Hệ mật mã khóa công khai RSA

Bob và Alice có những vấn đề thông thường của việc trao đói thông tin bí mật trên mộtđường dây thông tin liên lạc an toàn Bob và Alice có nhiều cách khác nhau thực hiện côngviệc này, phụ thuộc vào độ khó của việc giải quyết các bài toán logarit rời rạc Trong phầnnày chúng ta trình bày các hệ thống mật mã khóa công khai RSA là hệ thống phát minh đầutiên và tất nhiên được biết đến nhiều nhất RSA được đặt tên theo những nhà phát minh ra

nó là Ron Rivest, Adi Shamir và Leonard Adleman

Việc bảo mật RSA phụ thuộc vào phép lưỡng phân sau

Sử dụng khóa công khai của Bob (N,e) để

Trang 13

• Thiết lập Cho p và q là số nguyên tố lớn, cho N = p q , và cho e và с là các số

nguyên

• Bài toán Giải đồng dư thức X е = с (mod N) với ẩn X

Thuận lợi Bob, người biết được các giá trị của p và ợ, có thể dễ dàng tìm X như trình

bày trong Mệnh đề I1.1.4Ỉ

Khó khăn Eve, người không biết giá trị của p và ợ, không thể dễ dàng tìm X

Phép lưỡng phân Giải X e = с (mod N) là dễ dàng cho người có thêm thông tin bổ sung,

nhưng nó dường như là khó khăn cho tất cả những người khác

Hệ thống mật mã khóa công khai RSA được tóm tắt trong Bảng 1.1 Khóa bí mật của

Bob là một cặp số nguyên tố lớn p và q Khóa công khai của ông l à c ặ p ( 7 V , e ) g ồ m

t í c h N = p q v à m ộ t s ố m ũ m ã h ó a e n g u y ê n t ố c ù n g n h a u Alice có bản rõ

của mình và biến đói nó thành số nguyên m trong khoảng từ 1 đến N Cô mã hóa m bằng

cách tính đại lượng

с — 777 е (mod N)

Số nguyên с là bản mã của cô, mà cô gửi cho Bob Bob dễ dàng giải đồng dư thức X е — с

(móc! N) để phục hồi thông tin m của Alice, vì Bob đã biết phân tích thừa s ố N = p q Mặt khác, Eve có thể chặn được bản mã с nếu cô ấy biết phân tích N , cô có lẽ đã gặp khó khăn khi giải X е = с (mod N).

Ví dụ 1.2.1 Có thể minh họa hệ mật khóa công khai RSA với một ví dụ bằng số nhỏ Tấtnhiên, ví dụ này là không an toàn, vì con số này là quá nhỏ nên Eve sẽ dễ phân tích được

Trang 14

• Alice chuyến đói bản rõ cô thành một số nguyên

Bob có (p - 1 ){q - 1) = 1222.1986 = 2426892, giải ed = 1 (mod (p - l)(q -

1)), 94807 = 1 (mod 2426892), với d và thấy rằng d = 1051235 Bob lấy bản mã

с = 1473513 và tính

c d (mod N), 14735131"51235 = 107 0 7 77 (mod 2430101)

Giá trị mà ông tính chính là thông điệp m = 1070777 của Alice.

Nhận xét 1.2.2 С ác s ố N v h e hình thành khóa công khai của Bob được gọi tương đương với modun và s ố m ũ m ã h ó a Số d mà Bod sử dụng giải mã thông tin của Alice

mà d thỏa mãn

e d = 1 (mod (p — l)(q — 1)), (1.3)được gọi là chỉ số mã hóa Rõ ràng là mã hóa sẽ hiệu quả hơn nếu chỉ số mã hóa e là một số

nhỏ và tương tự như vậy thì giải mã sẽ hiệu quả hơn nếu chỉ số giải mã d là số nhỏ Tất

nhiên, Bob không thể chọn cả mã hóa và giải mã đều là giá trị nhỏ vì khi một trong haiđược lựa chọn thì cái còn lại sẽ được coi là đồng dư thức (OỊ)

Chú ý rằng Bob không thể lấy e = 2 vì ông cần e là số nguyên tố cùng nhau với ( p — 1

) ( q — 1) Do đó, giá trị nhỏ nhất có thể của e là e = 3 Như chúng ta biết, khi lấy e = 3 thì

an toàn như là lấy giá trị lớn hơn của e dù cho vẫn có một số điềm không thỏa đáng Những

ai muốn nhanh chóng mã hóa nhưng lại lo ngại với e = 3 quá nhỏ, khi đó thường lấy e = 216

+ 1 = 65537, vì nó chỉ

mất bốn phép bình phương và một phép nhân để tính 777, 65537

Một cách khác cho Bob là sử dụng một giá trị nhỏ cho d và sử dụng đồng dư thức (CH)

để xác định e, nên e sẽ lớn Tuy nhiên, điều này lại có thể dẫn đến phiên bản không an toàn

của RSA Chính xác hơn là nếu d nhỏ hơn /V1/4, thì lý thuyết liên phân số cho phép Eve

Trang 15

phá vỡ RSA.

Nhận xét 1.2.3 Thuật toán mã hóa công khai số N — p q , là tích của hai số nguyên tố bí mật p và q Mệnh đềII 1.41 cho biết nếu Eve biết giá trị ( p — l ) ( q — 1), thì bà có thể giải X e = с (mod N), và dó đó có thể mã hóa những thông tin được gửi cho Bob.

Khai triển hệ thức ( p — l ) ( q — 1) ta được

(p — 1 )(q — 1) = pq — p — q + 1 = N — (p — ợ) + 1 (1.4)

Bob đã công bố giá trị N , vì vậy Eve bây giờ đã biết N Do đó, nếu Eve có thể xác định giá trị của tổng p + q thì (11.4P sẽ cho bà biết giá trị ( p — 1 ) { q — 1) có thể giúp bà mã

hóa những thông tin

Thực tế, nếu Eve biết các giá trị p + q và p q , thì sẽ rất dễ để tính giá trị của p và q

Bà chỉ cần sử dụng công thức bậc hai để tìm ra những nghiệm của đa thức

X 2 - (p- q)X + pq,

vì phân tích đa thức thành nhân tử bằng ( X — p ) ( X — ợ), nên các nghiệm của nó là p

và q Do đó, khi Bob đưa ra giá trị N = p q thì sẽ chẳng dễ dàng cho Eve khi tìm ra giá trị của ( p — l ) ( q — 1) hơn là khi tìm p và q

Chúng ta minh họa bằng ví dụ sau Giả sử Eve biết rằng:

Trang 16

Phép tính này cho bà phân tích thừa số N = 66240912547 = 241511 • 274277.

Nhận xét 1.2.4 Chúng ta có đã cho thấy rằng Eve sẽ chẳng thấy dễ dàng khi xác định ( p

— 1 ) ( q — 1) hơn là bà phân tích N Nhưng lại không chứng minh được Eve buộc phải

phân tích N để giải mã những thông tin của Bob vấn đề là những gì Eve cần làm để giải những đồng dư thức dạng X e = с (mod N), và nhận thức được rằng có thuật toán hiệu quả

để giải những đồng dư thức như vậy mà không cần tìm giá trị của ( p — 1 ) ( q — 1).

Không ai tìm ra phương pháp nào như vậy tồn tại dù gợi ý rằng tính những nghiệm modun

N có thể đơn giản hơn phân tích N

1.3 Kiểm tra tính nguyên tố

Bob đã đọc xong các phần trên và bây giờ sẵn sàng truyền thông tin cho Alice bằng cáchdùng cặp khóa công khai/bí mật RSA của ông Đe tạo ra cặp khóa mã hóa RSA, Bob cầnchọn hai số n g u y ê n tố r ấ t l ớ n là p và q Ông không chọn được hai số nguyên tố đủ lớn nhưng có thẻ là hợp số, đó là những số p và q Trước hết, nếu p và q không phải là số

nguyên tố thì Bob sẽ cần phải biết cách phân tích chúng để giải mã thông tin của Alice

Nhưng thậm chí tệ hơn, nếu p và q là những số nguyên tố nhỏ, thì Eve có thể sẽ phân tích được p q và phá vỡ hệ thống của Bob.

Do đó, Bob cần phải tìm ra những số nguyên tố lớn hơn Chính xác hơn là ông cần mộtcách nào đó để phân biệt số nguyên tố và hợp số vì nếu ông tìm ra cách làm này, thì ông cóthể chọn ngẫu nhiên những số cho tới khi ông thấy nó là số nguyên tố Chúng ta sẽ thảoluận về vấn đề khả năng số được chọn ngẫu nhiên là số nguyên tố sau này, nhưng bây giờthì ông đã có cơ hội tốt để thành công Do đó, những gì Bob thực sự cần là một cách hiệuquả để xác định một số rất lớn là số nguyên tố

Ví dụ, giả sử như Bob chọn số lớn có giá trị:

Trang 17

Đồng dư thức ill 51) cho Bob biết rằng n là hợp số dù cho nó không cho ông bất kỳ dấu hiệu nào về cách phân tích n Tại sao? Xem lại định lý Fermat, nếu p là số nguyên tố thì

a P ~ l = 1 (mod p) (trừ trương hợp a chia hết cho p ) Do đó, nếu n là số nguyên tố, thì vế phải của (1 1 5h có thể đồng dư với 1, vì nếu không đồng dư với 1 thì Bob kết luận n không

là số nguyên tố

Trước khi tiếp tục phần trước đây liên quan đến sự tìm kiếm của Bob về những sốnguyên tố lớn, chúng ta phát biểu phiên bản thuận tiện của Định lý Fermat nhỏ, mà không

có điều kiện nào ở a

Định lí 1.3.1 (Đinh lý Fermat, phiên bản 2) C h o p l à s ố n g u y ê n t ố K h i đ ó

aP = a (mod p) với mọi số nguyên a (1-6)

Chứng m,inh Nếu p \ a, thì bản đầu tiên của Định lý Fermat cho thấy aP~l =

1 (mod p) Khi nhân cả hai vế với a ta chứng minh được (11.6Ị) là đúng Mặt khác, nếu p\a

Quay lại với sự tìm kiếm của Bob, ta thấy ông ấy chẳng có chút lo ngại nào khi ngẫunhiên chọn một số lớn khác,

Sau khi kiểm tra tính chia hết bởi những số nguyên tố nhỏ, Bob tính 2" mod n và tìm được

Từ (11.81) kết hợp với Định lý Fermat (11.3.11) có chứng minh được n là số nguyên tố

hay không? Câu trả lời là không! Định lý Fermat chỉ làm việc theo một chiều:

Nếu p là số nguyên tố, thì a p = a (mod p).

Chẳng có gì để cản trở tính đồng dư (Ị1.8Ị) là đúng với các giá trị hợp số của 77-, và thực

tế nghiên cứu cơ bản đưa ra những ví dụ như:

2341 = 2 (mod 341) với 341 = 11.31

Tuy nhiên, khi 2 n = 2 (mod n) sẽ có nhiều khả năng n là số nguyên tố, vì nếu giá trị của

2 n mod n ra khác thì n là hợp số Điều này dẫn đến định nghĩa sau đây.

Định nghĩa 1.3.2 số nguyên n cố định Ta nói sốnguyên a ỉàchứng thực

(cho tính hợp số) của n nếu

Trang 18

(i) a q đồng dư với 1 modun p.

(ii) Một trong những a q , a 2 q , a 4 ợ , « 2 đồng dư với 1 m o đ u n p

C h ứ n g m i n h Định lý Fermat nhỏ cho ta biết rằng a p ~ l = 1 (mod p) Quan sát dãy số:

Aq, A2 q, 0 A q , , A 2 q, a 2 q ,

mỗi số trong dãy trên là bình phương của số trước Do đó, một trong những khả năng sauđây buộc phải xảy ra:

(i) Số đầu tiên trong dãy đồng dư với 1 mocluri p

Trang 19

Bảng 1.2: Kiểm tra Miller-Rabin cho hợp số

Định nghĩa 1.3.4 Cho n là số lẻ và viết n — 1 = 2 k q với q lẻ số nguyên a mà thỏa mẫn UCLN(a, n) = 1 được gọi là chứng thục Miller-Rabin cho hợp số của n nếu cả hai điều kiện sau đây đều đúng:

( a ) a q ^ 1 (mod n)

(b) a 2 ' q ^ —1 (mod n) với mọi ỉ = 0,1, 2,k — ì.

Nó tuân theo Mệnh đề 11.3.31 đó là nếu tồn tại một số a mà chứng thực Miller- Rabin với 77/ thì n chắc chắn là hợp số Phương pháp kiểm tra Miller-Rabin cho hợp số được

trình bày ỏ Bảng 1.2

Bây giờ, giả sử rằng Bob muốn kiểm tra số lớn n có thể là số nguyên tố không? Để làm

điều này, ông đã làm phương pháp kiểm tra Miller-Rabin sử dụng một loạt những giá trị

được lựa chọn ngẫu nhiên của a Tại sao điều này lại tốt hơn việc dùng phương pháp

kiềm tra định lí Fermat nhỏ? Câu trả lời là không có số nào giống như Carmichael chophương pháp kiểm tra Miller-Rabin và thực tế mỗi hợp số đều có rất nhiều chứng thựcMiller-Rabin như được trình bày ở mệnh đề sau đây

Mệnh đề 1.3.5 Cho n là hợp số lẻ Khi đó ít nhất 75% những số giữa 1 và n — 1 là chứng thực cho n.

C h ứ n g m i n h Việc chứng minh này không khó, chúng ta sẽ không chứng minh ở đây.

□Bây giờ hãy xem xét những tìm kiếm của Bob đế tìm những số nguyên tố lớn Ông lấy

số nguyên tố n và thực hiện phương pháp kiểm tra Miller-Rabin cho n với 10 giá trị khác nhau của a Nếu bất kỳ giá trị a nào là phương pháp chứng minh Miller-Rabin với n thì Bob suy ra n là hợp số Mệnh đề 11.3.51 cho thấy nếu n là hợp số thì mỗi lẫn Bob thử một

giá trị cho a, ít nhất ông đã có 75% cơ hội chứng minh được nó Vì Bob không tìm được

chứng minh nào trong 10 lần thử đó, nên hợp lý khi kết luận rằng xác suất n là hợp số có ít

nhất (25%)10, xấp xỉ với 10-6 Và nếu không đủ thì Bob có thề sử dụng 100 giá trị khác

nhau của a và nếu không giá trị nào chứng minh n là hợp số thì xác suất n là hợp số sẽ ít

hơn (25%)100 « 1CT60

Ví dụ 1.3.6 Chúng ta minh họa phương pháp kiểm tra Miller-Rabin với a = 2 và n —

Trang 20

561 trong đó, bạn có thể nhớ lại định nghĩa về số Carmichael.Ta phân tích

n - 1 = 560 = 24 35

và sau đó tính

235 = 263 (mod 561), 22'35 = 2632 = 166 (mod 561), 2 4 ' 35 EE 166 2 EE 67 (mod 561),

28.35 = = l (mod 561)_

số đầu tiên 235 modun 561 không đồng dư với 1 hoặc —1 và những Hố khác

trong dãy này cũng không đồng dư với —1, vì vậy, 2 là chứng thực Miller-Rabin so vớithực tế là 561 là hợp số

Ví dụ 1.3.7 Ta thực hiện ví dụ thứ hai, lấy n = 172947529 và phân tích

VÌ vậy 3 cũng lại không phải là phương pháp Miller-Rabin Từ đây ta có thể nghi ngờ 77,

là số nguyên tố nhưng nếu ta thử với một giá trị khác, cho a = 23, thấy rằng

= 2257065 (mod 172947529),

2021618441 = 1 (mod 172947529)

Do đó, 23 là witness Miller-rabin và n thực sự là hợp số.

1.4 Thuật toán phép nhân tử hóa Pollard p-1

Chúng ta đã thấy là tương đối dễ để kiểm tra một số lớn liệu có phải là số nguyên tốkhông Điều này là tốt vì hệ thống mã hóa RSA cần những số nguyên tố lớn để thực hiện.Ngược lại, tính bảo mật của RSA dựa trên độ khó rõ ràng trong việc tính toán với những

số lớn Nghiên cứu về phép nhân tử hóa đã có từ thời kỳ Hy Lạp cổ đại nhưng nó chỉ dànhcho máy tính k h i mà mọi người bắt đầu phát triển những thuật toán có khả năng phân tích

Trang 21

những số lớn Nghịch lý RSA là để khiến RSA hoạt động hiệu quả hơn, chúng ta muốn

dùng modun N — p q càng nhỏ càng tốt Mặt khác, nếu nếu đối phương có thể có phân tích N thì thông tin được mã hóa của chúng ta sẽ không còn bảo mật Do vậy rất quan trọng

khi hiểu được khó khăn như thế nào đề phân tích những số lớn, và đặc biệt là để hiểu đượctiềm năng của những thuật toán khác nhau mà hiện nay được dùng để phân tích thừa số.Trong vài phần tiếp theo chúng ta sẽ thảo luận một cách chi tiết hơn về một số phươngpháp được biết đến để phân tích những số nguyên lớn

Chúng ta bắt đầu với thuật toán có tên gọi p h ư ơ n g p h á p P o l l a r d p — 1 Mặc dù

phương pháp này không có ích với mọi số nhưng vẫn có vài số mà chắc chắn nó có hiệuquả Phương pháp của Pollard chứng minh rằng có những modun RSA không an toàn màthoạt nhìn có vẻ là bảo mậ

Chúng ta đang xét s ố N = p q và nhiệm vụ là xác định các số nguyên tố p và q Giả

sử ta tìm ra số nguyên L có tính chất

p — 1 chia hết L và q — 1 không chia hết L

Điều này có nghĩa là có vài số nguyên z, j và k với k 7^ 0 thỏa mãn

L = i(p — l)và L = j(q — 1) + k.

Xét chuyện gì sẽ xảy ra nếu chúng ta lấy những số nguyên a được chọn ngẫu nhiên và tính

a L Định lý Fermat nhỏ cho biết

a L = a i(p-D = (ap-1 )< = 1 ’ = 1 (mod p),

a L = a i { “- 1 ) + k = a k (a q - 1 ý = a k • V = a k (mod q).

Số mũ k không bằng 0, vì vậy a sẽ không đồng diĩ với 1 modun q Dơ đó, với

những lựa chọn tối ưu của a, ta thấy

p chia hết a L — lvà q — Ikhông chia hết 0 L — 1.

Từ đây ta có thể khôi phục p qua phép tính UCLN đơn giản

Trang 22

một giá trị a và tính

ƯCLN(an! - 1, N)

(Để đơn giản ta có thể lấy a = 2) Nếu ƯCLN bằng 1 thì ta tiếp tục giá trị tiếp theo của n Nếu ƯCLN bằng N thì ta thật không may mắn, nhưng một giá trị a khác có thể sẽ đúng Và nếu ta lấy số nằm trong khoảng từ 1 đến N thì ta có thừa số không tầm thường của N và ta

sẽ thực hiện được

Nhận xét 1.4.1 Có hai nhận xét quan trọng cần làm trước khi chúng ta đưa ý tưởng của

Pollard vào thực hành, vấn đề đầu tiên liên quan đến giá trị a n l — 1 Thậm chí với a = 2

và với những giá trị trưng bình của n, cho n =100 và sẽ không khả thi để tính chính xác được a n ] — 1 Thực chất, số 2100! có hơn 10157 chữ số, con số mà lớn hơn số lượng các hạt

cơ bản trong vũ trụ được biết đến! May mắn là không cần phải tính toán nó một cách chính

xác Chúng ta chỉ quan tâm đến ƯCLN của a n l — 1 và 7V, vì vậy chỉ cần thoản mãn việc

tính

a"! — 1 (mod N)

sau đó thì lấy UCLN với N Như vậy chúng ta chưa bao giờ phải làm việc với các con số lớn hơn N

Thứ hai, chúng ta thậm chí không cần tính số mũ n\ Thay vào đó, giả sử rằng ta đã tính A N ' Ồ bước

trước, chúng ta có thể tính giá trị tiếp theo như sau

a(n+1)! = (a” ! )” +1 (mod N)

Điều này dẫn đến thuật toán được trình bày ỏ Bảng 1.3

Đưa vào Số nguyên N để phân tích.

1 Đặt a = 2 (hoặc một số giá trị khác thuận tiện).

2 Vòng lặp j — 2, 3, 4, lên đến một giới hạn nhất định.

3 Đặt a — a i mod n.

4 Tính d = UCLN(a- l,N)t.

5 Nếu 1 < d , < N thì thành công, trả lại d

6 Tăng dần j và lặp lại từ Bước 2.

í Để hiệu quả hơn chọn k thích hợp và tính UCLN trong Bước 4 chỉ

có mỗi lần lặp thứ k

Trang 23

Bảng 1.3: Thuật toán phân tích thừa số Pollard p — 1

Ví dụ 1.4.2 Ta sử dụng phương pháp Pollard p — 1 cho N = 13927189 Bắt

Trang 24

Vì vậy, sử dụng 2 — 1 ta được kết quả thừa số nguyên tố p = 350437 của N ,

và thừa số (nguyên tố) khác là 480661 Tất nhiên, p — 1 là tích của các thừa số nhỏ,

Trang 25

1.5 Phân tích thừa số qua hiệu của các bình phương

Phương pháp phân tích thừa số có ảnh hưởng lớn được biết đến ngày nay dựa trên một trong những đồng nhất thức đơn giản của toán học,

Công thức này nói rằng hiệu của các bình phương bằng tích số Áp dụng trực tiếp

công thức này để phân tích thừa số Để phân tích thừa số N , ta tìm số nguyên b sao cho N + b 2 là số chính phương và bằng a ? Khi đó N + b 2 = a2, do vậy

N = a2 = b2 = (a + b)(a — 6), và ta

đã thực hiện phân tích nhân tử N.

Ví dụ 1.5.1 Ta phân tích thừa số N = 25217 bằng cách đi tìm số nguyên b sao cho N + b 2 số chính phương:

phương không chính phương không chínhphương Đã thấy! **chính phương**

Tuy nhiên, ta không nhất thiết phải viết N bằng hiệu của hai số bình phương Ta cũng có thể viết ruột số bội số k N của N bằng hiệu của hai số bình phương, vì nếll

kN = a 2 - b 2 = (a + b)(a - 6),

Trang 26

2N + b 2 = 2 + b 2 = •!

t h ì đ ó l à m ộ t c á c h h ợ p l ý đ ề p h â n t í c h N b ở i v ế p h ả i c ủ a đ ẳ n g

t h ứ c , n g h ĩ a là, N có một nhân tử không tầm thường cùng với a + b và a — b

Sau đó ta có thể dễ dàng tìm lại được các nhân tử bằng cách tính UCLN(N,a+ b) vàƯCLN(N, a — b) Ta minh hoạ với ví dụ phía sau

Ví dụ 1.5.2 Cho N = 203299 Nếu ta lập một dãy các giá trị củaN + b 2 , với

b = 1, c h o tới b = 100, ta sẽ không tìm được bất kỳ giá trị bìnhphương nào.

Vì vậy chúng ta sẽ liệt kê các giá trị của 3 N + b 2 và ta tìm được

3 • 203299 + 8 2 = 609961 = 7812 Đã thấy! **chính phương** Do đó

3 • 203299 = 7812 - 8 2 = (781 + 8) (781 - 8) = 789 • 773,sau đó khi ta tính

UCLN(203299, 789) = 263 và ƯCLN(203299, 773) = 773,

ta tìm đã tìm được thừa số không tầm thường của N Các số 263 và 773 là các số nguyên tố, như vậy, phân tích thừa số đầy đủ của N là 203299 = 263 • 773.

Nhận xét 1.5.3 Trong Ví du 11.5.21 chúng ta đã lập một dãy các giá trị của 3N +

b 2 Tại sao chúng ta không thử với 2 N + b2 đầu tiên? Câu trả lời là nếu N là lẻ, thì 2 n + b 2 không bao giờ là một bình phương, cho nên ta sẽ lãng phí thời gian để

thử nó Lý do mà 2 N + b2 không bao giờ là một bình phương được thể hiện như

b lẻ.

Trang 27

Như vậy 2 N + b 2 đồng dư với 2 hoặc 3 modun 4 Nhưng bình phương phải

đồng dư với 0 hoặc 1 modun 4 Do đó nếu N là lẻ, thì 2 N + b 2 không là ruột

Trong thực tế nó không cho phép để tìm trực tiếp các số nguyên a và b thoả

mãn (11.10ỈL Thay vào đó, chúng ta dùng quy trình bước như đã được mô tảtrong Bảng 1.4 Quy trình này, dưới hình thức này hay hình thức khác, làm cơ

sở sỏ cho hầu hết các phương pháp của phân tích thừa số

1 Xây dựng quan hệ: Tìm những số nguyên a!,a2,r/3, ,ar với tính chất C ị

= à ị (mod N) là tích của các số nguyên tố

nhỏ

2 Phép khử: L ấy tích C ị 1 C ị 2 • • • C ị s của một số d để tất cả các sô

nguyên tố xuất hiện trong tích đều phải có số mũ chẵn Khi đó

C ị C ị 2 • • • C ị s — b 2 là một số chính phương.

3 Tính UCLN: Cho a = o,ị l aị 2 ''' a i s và tính ƯCLN d = UCLN(N, a —

a 2 = ( a i l a Ì 2 • • • a i s ) 2 = a ị a ị • • • à \ = c?;ic?;2• • • C ị s = b 2 (modN),

có một trường hơp ngẫu nhiên hợp lý rằng D là ruột nhân tử không

tầm thường của N

Bảng 1.4: Quy trình 3 bước phân tích thừa số

Ví dụ 1.5.4 Cho N = 914387 sử dụng quy trình được trình bày trong Bảng

1.4.Đầu tiên, ta tìm a nguyên có tính chất a ? mo (ì N là tích của các số nguyên tố nhỏ Đối với ví dụ này, ta cần a 2 mod N làtích của các số nguyên tốtrong

tập {2, 3, 5, 7, 11} Ta thấy

Trang 29

Bây giờ chúng ta sẽ nghiên cứu có hệ thống hơn Quy trình phân tích thừa sốđược trình bày trong Bảng 1.4 gồm ba bước:

n ó i r ằ n g m õ i C ị là tích của các số nguyên tố được chọn từ tập hợp các số

nguyên tố t là { p i 1 P 21 P 3 5 Điều này có nghĩa là tồn tại các số mũ e ị j sao cho

Ci = P i p 2 P Ĩ ' " P t ,

02 = P T P T P T "

c r = P Ĩ 1 P Ĩ 2 P Ỉ * - - - P t r l ,

Mục đích của chúng ta là để có tích số của ruột số C ị để làm mỗi số nguyên tố

trong vế phải của đắng thức trên phải có số mũ chẵn Nói cách khác, bài toán của

chúng ta quy về để tìm Ui, U2, ^3,u r e {0,1} sao cho

Trang 30

trong (ìl.llíì hay trong (I1.12Ị) là chẵn Tóm lại, chúng ta có được các số nguyên

Hệ đồng dư (Ì1.13Ị) chỉ là hệ phương trình tuyến tính trên trường hữu hạn F 2 Do

đó sử dụng tiêu chuẩn từ đại số tuyến tính, như phép khử Gauss để giải hệ phươngtrình này

Ví dụ 1.5.6 Chúng ta minh hoạ bước phép khử đại số tuyến tính bằng cách phântích số

N = 9788111.

Ta tìm số a có tính chất a ? là 50—trơn, tức là, tìm số a sao cho a2 mod N bằngtích của các số nguyên tố trong tập hợp

{2, 3, 5, 7,11,13,17,19, 23, 29, 31, 37, 41, 43, 47}

Phần trên của Bảng 1.5 liệt kê 20 số <7,1, a2,0-20 từ 3129 đến 4700 có tính chất

này, cùng với phép phân tích thừa số của mỗi

C ị = a ị (mod N).

Phần dưới của Bảng 1.5 chuyển điều kiện rằng tích c ^ 2 • • -^20° phải là một bìnhphương thành hệ phương trình tuyến tính cho (ui, u2,M20) như đã trình b à y b ở i ( 0 3 ! ) Đ e t h u ậ n t i ệ n k í h i ệ u , c h ú n g t a đ ã v i ế t h ệ p h ư ơ n g t r ì n h

t u y ế n tính trong Bảng 1.5 dưới dạng ma trận

Bước tiếp theo là giải hệ phương trình tuyến tính trong Bảng 1.5 Việc này có thể được thực hiện bằng phép khử Gauss, luôn lưu ý rằng toàn bộ phép tính

Trang 31

phải làm theo modun 2 Tập hợp các nghiệm hoá ra lại là không gian vectơ F2 có sốchiều là 8 Một cơ sỏ cho tập hợp các nghiệm được cho bỏi 8 vectơ sau, trong đó chúng

ta đã viết vectơ theo chiều ngang, chứ không phải theo chiều dọc, đe tiết kiệm khônggian:

Mỗi một vectơ V ị , V g cho một đồng dư thức a 2 = b2(mod N) mà có khả năng

để cho phép nhân tử hoá của N Ví dụ, V \ cho biết nếu chúng ta nhân các số 3 r Ể , 5 t h

và 9 t h trong danh sách ở trên cùng của Bảng 1.5, ta sẽ được một bình phương, và thậtvậy ta thấy là

31312 -31742-34812

= (2 • 52 • 7 • 43)(5 • ll3 • 43)(2 • 53 • 7 • ll3) (mod 9788111)

= (2 • 53 • 7 • ll3 • 43) 2 =

1001577502.Tiếp theo, ta tính

UCLN(9788111,3131 • 3174 • 3481 - 100157750) = 9788111,

nó hoàn lại số gốc N Tuy nhiên ta có thêm bảy nghiệm độc lập cho hệ phương trình

tuyến tính Thử lần lượt, ta có kết quả trong Bảng 1.6 Bảy trong số tám nghiệm của hệ

phương trình tuyến tính không mang lại thông tin hữu ích nào về N , kết quả ƯCLN 1 hoặc N Tuy nhiên, một nghiệm, được liệt kê trong ô gần cuối của Bảng 1.6, dẫn đến phân tích thừa số không tầm thường của N Do đó 2741 là một t h ừ a số của N , và chia cho nó ta được N = 9788111 = 2741 • 3571 Vì cả hai số 2741 và 3571 đều nguyên tố, nên ta có đây là phân tích thừa số đầy đủ của N

Trang 32

2 • 17 -23-31 344

43 442

3 • 13 2 • 17 44G

: i ■ 13 • 19 • 29

Ị 0 0 I

0 0 0

u 0 0

u u u l) 0 (ỉ

0 0 0

u 0

1 ) 0 0 0

10

10 u

0 0 1

11110 l) 0 (ỉ l) 0 0

1 1 1 ]

0 u1 1 1

0 110 1

0 0 u 00

11U1) (J l)0 (ỉ l) 0

1 1 u 0 ]

0 u u 0 0

1 0 (ỉ l) 0

Trang 33

Nhận xét 1.5.7 Để phân tích số lớn N , có lẽ là phải dùng tập hợp { p i , P 2 - , P 3 i

■ ■ ■ i P t } chứa hàng trăm ngàn, thậm chí hàng triệu các số nguyên tố Thì hệ

(11.131) chứa hàng triệu phương trình tuyến tính, và thậm chí còn thực hiện trongtrường F2, có thể rất khó để giải hệ này Tuy nhiên, nó chỉ ra rằng hệ phương trìnhtuyến tính được dùng trong phép nhân tử hoá là khá thưa thớt, có nghĩa là hầu hếtcác hệ số của chúng là bằng không Có nhiều kĩ thuật đặc biệt để giải hệ phươngtrình tuyến tính thưa thớt mà hiệu quả hơn nhiều so với khử Gauss thường

Trang 34

«1 = ( 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )

3131 2 • 3174 2 • 3481 2 = (‘2 • 5 3 • 7 • ll 3 • 43) 2

= 100157750 2

UCLN(9788111 • 3131 • 3174 • 3481 - 100157750) = 9788111 v 2 = (0,1,1,1,1,1, 0,0, 0,0,0, 0,0, 0,0, 0,0, 0,0,0)

3130 2 • 3131 2 • 316G 2 • 3174 2 • 3215 2 = (2 • 5 2 ■ 7 3 • ll 2 ■ 17 • 31 • 43 • 47) 2

= 2210173785050 2

UCLN(9788111, 3130 • 3131 • 3166 • 3174 • 3215 - 2210173785050) = 1 v :i = (0,0,1,1,0, 0, 0,0, 0,1,

Trang 35

0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

3131 2 • 3166 2 • 3561 2 = (2 • 5 2 • 7 2 • 31 2 • 43) 2

= 101241350 2

UCLN(9788111, 3131 • 3166 • 3561 - 101241350) = 9788111 v 4 = (1,0, 1,0, 0,0, 0,0, 0,0, 1,0, 0,0, 0,0, 0,0, 0,0)

3129 2 • 3131 2 • 4394 2 = (2 • 5 3 • 7 • 11 • 23 • 43) 2

= 19038250 2

UCLN(9788111, 3129 • 3131 • 4394 - 19038250) = 9788111 v b =

Trang 37

UCLN(9788111, 3129 • 3449 • 4426 • 4442 - 3311167860) = 1 v 7 = (1,0, 0,0, 0,0,1,1, 0,0, 0,0,

1,0,0,0, 0,0,1,0)

3129 2 •3313 2 • 3449 2 • 4426 2 • 4651 2 = (2 2 • 3• 5 • 7 2 • 11 • 17 • 23 2 • 31 2 • 47) 2

= 1313G082114540 2 UCLN(9788111, 3129 • 3313 ■ 3449 • 4426 • 4G51 - 1313G082114540) = 2741 Vg = (1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1)

3129 2 • 3449 2 • 4425 2 • 4426 2 • 4684 2 = (2 2 • 3 2 • 5 • 7 2 • 11 • 13 • 17 • 23 • 37 • 47) 2

= 857592475740 2

UCLN(9788111, 3129 • 3449 • 4425 • 4426 • 4684 - 857592475740) = 1

Trang 38

Bảng 1.6: phân tích thừa số N = 9788111 32

CHƯƠNG 2

SỐ TRƠN, SÀNG VÀ XÂY DựNG QUAN HỆ CHO PHÉP NHÂN TỬ HOÁ

Trong phần này chúng ta trình bày nhanh hai phương pháp được biết đến đe làm khó

bài toán phép nhân tử hoá, nghĩa là, phân tích các số có dạng N = p q , trong đó p và q

là các số nguyên tố Chúng ta bắt đầu với một cuộc thảo luận về số trơn, hình thành nên

Trang 39

các công cụ cần thiết để xây dựng các quan hệ Tiếp theo chúng ta trình bày ruột cách chitiết sàng bậc hai, là một phương pháp nhanh đề tìm các số trơn Cuối cùng, chúng ta trìnhbày ngắn gọn sàng trường số, giống sàng bậc hai ở chỗ nó cung cấp phương pháp nhanh

đe tìm các số trơn của một dạng nhất định Tuy nhiên, khi N vô cùng lớn, sàng trường số

nhanh hơn nhiều so với sàng bậc hai

2.1 Số trơn

Trang 40

Các bước xây dựng quan hệ trong quy trình phân tích thừa số ba bước trình bày trongBảng 1.4 đòi hỏi chúng ta tìm thấy nhiều số nguyên với tính chất là a2 mod N là tích củacác số nguyên tố nhỏ Như đã nói ở phần cuối của Phần

1.4, các số phân tích được tốt phải có một tên gọi

Định nghĩa 2.1.1 Một số nguyên n được gọi ỉ,ờ, D-trơn nếu tất cả C Á C thừa số nguyên

tố của nó là nhỏ hơn hoặc bằng D.

Ví dụ 2.1.2 Dưới đây là ruột vài các số 5-trơn đầu tiên và một vài các số không phải là

Ngày đăng: 02/11/2015, 17:00

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w