Sàng bậc ha

Một phần của tài liệu 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ã (Trang 35)

Trong phần này, chúng ta xác định phần cuối của câu hỏi khó cần phải được giải quyết nhằm phân tích được những số lớn nhờ hiệu của phương pháp bình phương.

Làm thế nào để tìm được nhiều số А > У/N

sao cho MRI Á2 (mod N) là số z?-trơn?

Như đã thảo luận ỏ các phần trước, chúng ta biết rằng ta cần lấy В ~ L ( NY^2 để có thể phân tích được N .

Một cách tiếp cận nhanh để tìm các bình phương B-trơn modim N là tìm phân số I mà xấp xỉ V KN với К — 1, 2, 3,... . Khi đó

a2 « b2kN,

do đó A2 là giá trị nhỏ phù hợp, do vậy mà có thể là số z?-trơn. Lý thuyết của l i ê n phân số đưa ra t huật t oán để t ì m phân số I như v ậy.

Một phương pháp khác nhanh hơn nhiều trong thực tế là cho các giá trị lớn h ơ n m ộ t c h ú t c ủ a a v à s ử d ụ n g q u y t r ì n h g i ả n ư ớ c h i ệ u q u ả đ ư ợ c g ọ i l à s à n g để cùng một lúc tạo ra nhiều giá trị A? ~ B2KN là z?-trơn. Tiếp theo chúng ta trình bày S À N G B Ậ C H A I của Pomerance, là phương pháp nhanh được biết đến để phân tích các số lớn N = P Q lên đến khoảng 2350. Đối với những số lớn hơn đáng kể, như lớn hơn 2 450 thì S À N G T R Ư Ờ N G S Ố phức tạp hơn giữ kỷ lục thế giới về phép nhân tử hoá nhanh nhất. Phần còn lại, ta sẽ trình bày phiên bản đơn giản nhất của sàng bậc hai như là minh họa cho những phương pháp phân tích thừa số hiện đại.

Chúng ta bắt đầu với bài toán đơn giản về cách tìm nhanh các số z?-trơn ít hơn một số ràng buộc X cho dù các số có dạng A2 (mod N). Để làm được điều này, chúng ta cần phải quen với S À N G ER A T O S T H E N E S, là p h ư ơ n g pháp của người Hy Lạp cổ để lập danh sách các số nguyên tố. Ý tưỏng của Eratosthenes để tìm các số nguyên tố như sau. Bắt đầu bằng cách khoanh tròn số nguyên tố 2 và gạch đi những bội lớn hơn của 2. Sau đó khoanh tròn số 3 (số buộc phải là số nguy ê n t ố) v à c ũng gạc h đi những bội l ớn hơn c ủa 3. số nhỏ nhất c hưa được

35 5

khoanh là 5, vì vậy khoanh 5 và bỏ đi những bội lớn hơn của 5, và vân vân... Cuối cùng, những số được khoanh tròn là số nguyên tố.

Phương pháp sàng được minh họa ỏ Bảng 2.1, trong đó ta lọc tất cả những số nguyên tố nhỏ hơn 10. (Những số nguyên tố là những số nằm trong ô trong bảng). Những số còn lại không được gạch là những số nguyên tố còn lại nhỏ hơn 100.

Bảng 2.1: Quá trình của L(X) = e\Ain *)(in In X)

Khi đó có vài số nguyên tố bị gạch đi vài lần. Ví dụ 6, 12,18 bị gạch hai lần vì chúng có bội của 2 và 3. Tương tự những số như 30 và 42 là những số bị gạch

3 lần. Giả sử thay vì gạch những số đó đi, ta thực hiện chia. Đầu tiên chúng ta thực hiện phép chia với 2, sau đó chia các bội của 3 cho 3, sau đó lại chia các bội của 5 cho 5, v.v. . Nếu ta làm phép chia này với tất cả những số nguyên tố nhỏ hơn D thì những số nào bị chia xuống còn 1? Câu trả lời là các số đó là tích của những số nguyên tố nhỏ hơn đặc biệt chúng là những số z?-trơn. Vì vậy chúng ta thu được một dãy các số D -trơn.

Thật không may, chúng ta bỏ qua một vài số D — trơn, cụ the là những số chia hết cho lũy thừa của các số nguyên tố nhỏ, nhưng dễ khắc phục bài toán này bằng cách sàng những lũy thừa nguyên tố. Do đó, sail khi sàng bằng 3, thay vì tiếp tục với 5, ta sẽ sàng bằng 4. Để làm điều này, ta giản ước 2 từ các bội của 4. (Nhận thấy rằng ta đã giản ước 2 từ các số này, do chúng là chẵn, vì thế ta có thể giản ước duy nhất nhân tử bổ sung của 2.) Nếu ta làm việc này, thì cuối cùng, những số D trơn nhỏ hơn X chính là các số đã quy về đến 1. Ta có the thấy rằng tất cả những phép chia đều được yêu cầu phải là xấp xỉ X ln(ln(Z?)). Hàm số logarit kép ln(ln(Z?)) tăng rất chậm, nên số trung bình của những phép chia cần để kiểm tra mỗi số riêng lẻ để xác định tính trơn là xấp xỉ hằng số.

Tuy nhiên, mục đích của chúng ta không phải là lập một dãy các số từ 1 đến X

là số z?-trơn. Cái mà ta cần là một dãy các số dạng A2 (mod N) là số z?-trơn. Đe đạt được điều này ta sử dụng đa thức

F(T) = T2 - N.

Bắt đầu với giá trị của A mà lớn hơn VN một chút, ta đặt

36 6

A = [ \ Í N + 1J,

trong đó, [xj là số nguyên lớn nhất nhỏ hơn hoặc bằng X . Sau đó ta quan sát dãy các số:

F(a),F(a+l),F(a + 2),..,F(&). (2.1)

Mục đích là tìm những số z?-trơn trong dãy số này bằng cách sàng những số

n g u y ê n t ố n h ỏ h ơ n D v à x e m c á c s ố n à o t r o n g d ã y s ố đ ư ợ c s à n g x u ố n g đ ế n 1 . Ta chọn số D đủ lớn sao cho để kết thúc quá trình sàng ta có thể tìm đủ những số z?-trơn nhằm phân tích được N . Định nghĩa sau đây có ích trong việc mô tả quá trình này.

Định nghĩa 2.2.1. Tập hợp các số nguyên tố nhỏ hơn D (hay đôi khi ỉà tập c ác l ũy t hừa

nguy ê n t ố nhỏ hơn D) được gọi ỉ à c ơ sở nhân t ử.

Giả sử P là một số nguyên tố trong cơ sỏ nhân tử của nó. Những số nào trong dãy (12.1 ỉ) chia hết cho P‘Ỉ Tương đương với, những số T nào giữa AB thỏa mãn:

t2 = N (mod 0)? (2.2)

Nếu đồng dư thức (12.21) không có nghiệm thì ta loại số nguyên tố P vì không số nào trong dãy (12.11) chia hết cho P. Ngược lại thì đồng dư thức (I 2 . 2 Ị 1 sẽ có chia nghiệm, ta ký hiệu như sau: (adsbygoogle = window.adsbygoogle || []).push({});

tO í p VỄL t$ p ’

(Nếu P = 2, chỉ có ruột nghiệm AP. ) Cho nên mỗi số

F(ap), F(ap + p), F(ap + 2p), F(ap + 3p),...

và mỗi số

f(A>)> F(Pp + p)> FWp + 2p), F{Pp + 3p),...

chia hết cho P. Như vậy chúng ta có thể sàng đi một nhân tử của P từ tất cả các mục PT H trong danh sách (Ị 2 . 1 Ị) . bắt đầu với giá trị nhỏ nhất A thoả mãn A = AP

( m o d p), v à đ ồ n g dạng c h ú n g ta có t h ể sàng đ i m ộ t nhân tử c ủ a P từ tất cả các mục PT H trong danh mục (Ị2.1Ị1 . bắt đầu với giá trị nhỏ nhất thoả mãn A = Ị 3P (mod p).

37 7

Ví dụ 2.2.2. Chúng ta minh hoạ sàng bậc hai áp dụng cho hợp số N = 221. Số nhỏ nhất có bình phương lớn hơn Na = [v22ĨJ + 1 = 15. Ta đặt F(T) = T2 - 221 và sàng các số từ -F(15) = 4 đến F (30) = 679 dùng lần lượt các số II1Ũ nguyên tố từ 2 tới 7. Danh sách các số đầu tiên của T2 — N Ì Ầ

4 35 68 103 140 179 220 263 308 355 404 455 508 563 620 679.

Đầu tiên ta sàng bỏi P = 2, có nghĩa là ta giản ước 2 từ tất cả mục thứ hai trong danh sách. Từ đây ta được

4 35 68 103 140 179 220 263 308 3-

55 404 455 508 563 620 679

ị 2 ị 2 ị 2 ị 2 ị 2 ị 2 ị 2 ị 2

2 35 34 103 70 179 110 263 1-

54 3-55 202 455 254 563 310 679

Tiếp theo ta sàng bởi P = 3. Tuy nhiên, các đồng dư thức

T2 = 2 2 1 = 2 (mocl 3) không có nghiệm nên không có mục nào trong danh mục chia hết cho 3.

Ta chuyển sang lũy thừa nguyên tố 22. Mọi số lẻ là nghiệm của đồng dư thức

T2= 2 2 1 = 1 (mod 4),

có nghĩa là chúng ta có thể sàng một nhân tử khác của 2 từ tất cả mục thứ hai trong danh sách. Tiếp theo ta sàng bởi 4 bằng cách giản ước duy nhất một nhân tử của 2 từ mỗi mục. 2 35 34 103 70 179 110 263 154 3- 55 202 455 254 563 310 679 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 1 35 17 103 35 179 55 263 77 3- 55 101 455 127 563 155 679

Tiếp theo ta chuyển sang P = 5. Đồng dư thức t2 = 221 = 1 (mocỉ 5)

có hai nghiệm, Oí5 = 1 và PS = 4. Giá trị T đầu tiên trong danh sách mà đồng dư với 1 modun 5 là T = 16, nên bắt đầu với F(16), ta nhận thấy là tất cả mục thứ năm chia hết cho 5. Sàng ra nhân tử của 5 ta được

38 8

1 35 17 103 35 179 55 263 77 355 101 455 127 563 155 679

ị 5 ị 5 ị 5

1 7 17 103 35 179 11 263 77 355 101 91 127 563 155 679

Tương tự như vậy,tất cả các mục thứ năm bắt đầu với F(19) chia hết cho 5, vì thế ta sàng ra nhân tử đó 1 7 17 103 35 179 11 263 77 355 101 91 127 563 155 679 ị 5 ị 5 ị 5 1 7 17 103 7 179 11 263 77 71 101 91 127 563 31 679 Để kết thúc ví dụ , chúng ta sàng số nguyên tố P = 7. Đồng dư thức t2 = 221 = 4 (mocl 7)

có hai nghiệm A7 = 2 và / 37 = 5. Như vậy chúng ta có thể sàng 7 ra từ tất cả mục thứ bảy bắt đầu với F ( 16), và tất cả mục thứ bảy bắt đầu với F ( 19). Từ đây ta được 1 7 17 103 7 179 11 263 77 71 101 91 127 563 31 679 ị 7 ị 7 ị 7 1 1 17 103 7 179 11 263 77 71 101 91 127 563 31 97 ị 7 ị 7 1 1 17 103 1 179 11 263 77 71 101 13 127 563 31 97

Nhận thấy rằng các mục ban đầu (adsbygoogle = window.adsbygoogle || []).push({});

F(15) = 4, F(16) = 35, và F( 19) = 140 đã sàng tất cả xuống đến 1. Điều này cho ta biết rằng

F(15) = 152 = 221, F(16) = 162 = 221, và F(19) = 192 - 221

là tích của các số nguyên tố nhỏ, vì thế ta tìm ra một số bình phương modun 221 là tích của các số nguyên tố nhỏ:

39 9

Chúng ta có thể dùng đồng dư thức Íl 2 .rì[ j để có được những quan hệ khác nhau giữa các bình phương. Ví dụ,

(16- 19)2 EE (2 • 5 - 7 f (mod 221). Tính

UCLN(221,16 • 19 - 2 • 5 • 7) = UCLN(221, 234) = 13 cho ta một nhân tử không tầm thường của 221.

Ta đã nhân tử thành công N = 221, nhưng để minh hoạ phương pháp sàng xa hơn, ta tiếp tục sàng đến D = 11. Lũy thừa nguyên tố để sàng là 32. Tuy nhiên,

đồng dư t hức t = 221 (moc l 3) không c ó nghi ệ m, nghĩ a l à t2 = 221 = 1 (mod 11) c ũ n g k h ô n g c ó n g h i ệ m , v ì t h ế t a c h u y ế n s a n g đ ế n s ố n g u y ê n t ố p = 1 1 .

Đồng dư thứct 2 = 221 = 1 (mod11)có các nghiệmlà CMn= 1

Ị 3N = 10,

cho phép ta sàng nhân tử của 11 từF (23)và từ F(21). Chúngtôi tómlại toàn

bộ phương pháp sàng trong Bảng 1.7, trong đó hàng đầu cho giá trị của Tc á c h à n g t i ế p t h e o s à n g g i á t r ị c ủ a F (T) = t 2 — 2 2 1 s ử d ụ n g l ũ y t h ừ a n g u y ê n tố lên đến 11.

Nhận thấy rằng hai mục ^(21) và F(23), đã sàng xuống đến 1, cho chúng ta hai quan hệ bổ sung

F(21) = 21 2 = 2 2 • 5 • 11 (mod 221) và F(23) = 232 = 2 2 • 7 • 11 (mod 221).

Chúng ta có thể kết hợp các quan hệ này với quan hệ (I9-3ỊÌ để có được đẳng thức bình phương mới, ví dụ

(19 • 21 • 23)2 = (23 • 5 • 7 • ll) 2 (mod 211). Đây là cách khác cho nhân tử 221 :

UCLN(221,19 • 21 • 23 - 2 3 • 5 • 7) = UCLN(221,6097) = 13. Nhận xét 2.2.3. Nếu P là số nguyên tố lẻ, thì đồng dư thức có ngiệm là 0 hoặc 1 moclun Ỹ. Khái quát hơn, đồng dư thức

T2 — N (mod pc)

40 0

lũy thừa modun của p có nghiệm là 0 hoặc 2. Điều này làm cho

việc sàng lũy thừa nguyên tố lẻ tương đối đơn giản.

lũy thừa của 2 phức tạp hơn một chút, vì số của nghiệm có thể khác nhau modun 2, moclưn 4, và modun lũy thừa cao hơn của 2. Ngoài ra, có thể có nghiệm hơn hai. Chẳng hạn như, T2 = N (mod 8) có bốn nghiệm khác nhau moclun 8 nếu N — 1 (mocl 8). Vì vậy mặc dù sàng lũy thừa của 2 thực chất không khó khăn, nó phải được xử lý như một trường hợp đặc biệt.

1.3 Sàng trường số

SÀ N G T R Ư Ờ N G S Ố là phương pháp phân tích thừa số làm việc trong vành với các số nguyên thường lớn. Trong phần này chúng ta có nội dung giải thích ngắn gọn một số ý tưỏng đi vào làm sàng trường số phương pháp nhanh nhất để phân

41 1 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 4 35 68 103 140 179 220 263 308 355 404 455 508 563 620 679 ị 2 ị 2 ị 2 ị 2 ị 2 ị 2 ị 2 ị 2 2 35 34 103 70 179 110 263 154 355 202 455 254 563 310 679 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 ị 4 1 35 ị 5 17 103 35 179 55 263 ị 5 77 355 101 455 127 ị 5 563 155 679 1 7 17 103 35 ị 5 179 11 263 77 355 ị 5 101 91 127 563 155 ị 5 679 1 7 ị 7 17 103 7 179 11 263 77 ị 7 71 101 91 127 563 31 679 ị 7 1 1 17 103 7 ị 7 179 11 263 11 71 101 91 ị 7 127 563 31 97 1 1 17 103 1 179 11 263 11 ị 11 71 101 13 127 563 31 97 1 1 17 103 1 179 11 ị 11 263 1 71 101 13 127 563 31 97 1 1 17 103 1 179 1 263 1 71 101 13 127 563 31 97 Hìnli 2.1: Sàng N = 221 sử dụng số nguyên tố D = 11

tích số có dạng N = P Q, trong đó PQ là các số nguyên tố của cùng một cách xấp xỉ độ lớn.

Đe phân tích N ta bắt đầu bằng cách tìm một số nguyên M khác không và đ a t h ứ c l ồ i b ấ t k h ả q u y f ( x ) £ z [ x ] c ó b ậ c n h ỏ t h o ả m ã n

/(ra) = 0 (mod N).

Ví dụ 2.3.1. Giả sử ta muốn phân tích số N = 22 + 1. Khi đó ta có thể lấy M = 2103 và F(X) = X5 + 8, vì (adsbygoogle = window.adsbygoogle || []).push({});

F(M) = /(2 103 = 2 515 + 8 = 8(2 515 + 1) = 0 (mod 2 29 + 1).

Cho D là bậc của F(X) và cho S S là một nghiệm của F(X) . (Lưu ý là S S có thể là số phức.) Ta sẽ làm việc trong vành

^ [S S] = { c 0 + CI S S + C2S S2 + • • • + CĐ-I S SD G с : Со, C l , Q _ ! G z}. Ví dụ 2.3.2. Chúng ta đưa ra ví dụ để minh hoạ cách thực hiện phép cộng và phép nhân trong vành Z[/3]. Cho F(X) = 1 H- 3.T — 2.T3 + .T4, cho S S là một nghiệm của /(x), và xét vành Z[S S] . Đe cộng các phần tử

и = 2 - A ß + 7ß2 + 3 ß3 và v = l + 2 ß - Aß2 - 2ß\

ta chỉ cần cộng các hệ số,

И + V = 3 — ‘ IS S + 3S S2 + .

Phép nhân phức tạp hơn một chút. Đầu tiên ta nhân I I và V, xem S S như biến số,

uv = 92 + 308/9 + 111/32 - 133/33 e z[ß\.

San đó ta chia cho F(S S) = 1 + 3S S — 2S S3 + S S4, vẫn xem S S như biến số, và giữ số dư.

Bước tiếp theo trong sàng trường số là để tìm nhiều cặp các số nguyên (ữi , òi ), (ữj f c, bỵ ) đồng t hời t hoả mãn к п [о,ị — bịTn.) là một bình phương trong z và г = 1 к П { (L Ị - B I S S) là một bình phiĩơng trong Z[/9]. г = 1

Theo định nghĩa của z|jỡ], ta có thể tìm biểu thức cho a có dạng

OÍ — CQ -b CỊỊ3 + C2/32 + • • • + CD-IPD 1 với Co, Cl, C2,Q_1 G z. (2-5) Theo giả thiết f(rn) = 0 (mod N). Từ đây ta có giả thiết f(rn) = 0 (mod N). Từ đây ta có

M = Ị 3 (mod N) trong vành z|jỡ], Vậy, một mặt ta có, (I2.4Ị1 trở thành A2 = A2 (mod N) trong vành Z[/3], trong khi mặt khác, (12.51) trỏ thành A = CQ + CỊ I N + c2m2 + • • • + CD-I MD~1 (mod N) trong vành z[ / 3 ] . Do đó A2 = (C0 + CỊ Ĩ Ĩ I + c2m2 + • • • + CD_I MD~1)2 (mod N).

Như vậy ta đã tạo ra một đồng dư thức A2 = D2 tồn tại trong vành số nguyên z, và như thường lệ, thì có khả năng cao mà ƯCLN ( A — B , N ) sẽ cho một thừa số không tầm thường của N .

Làm thế nào chúng ta tìm ra những cặp (A,Ị,B Ị) đế cả hai tích trong (Ị2.4Ị) thành những bình phương? Với tích số thứ nhất, ta có thể dùng thuật toán sàng mà tương tự như phương pháp được dùng trong sàng bậc hai để tìm những giá t rị a — bm l à t rơn v à rồi dùng đại số t uy ế n t í nh để t ì m một t ập con v ới t í nh chất mong muốn.

Ý tưởng của Pollard là cũng thực hiện tương tự như vậy với tích số thứ hai trong khi đang làm ở vành z[/?]. Do đó, chúng ta tìm những cặp số nguyên (a, B) s a o c h o s ố a — b / 3 l à " t r ơ n " t r o n g Z [ / 3 ] . C ó n h i ề u v ấ n đ ề n g h i ê m t r ọ n g p h á t s i n h k h i c h ú n g t a l à m đ i ề u n à y , đ ó l à :

1) Vành z[/?] các phần tử thường không có phép nhân tử hóa duy nhất thành các

Một phần của tài liệu 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ã (Trang 35)