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

Một phần của tài liệu Phân tích thừa số nguyên tố và ứng dụng trong mật mã (Trang 24 - 34)

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,

X2 −Y2 = (X +Y)(X −Y). (1.9) 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 + b2 là số chính phương và bằng a2. Khi đó N + b2 = a2, do vậy

N = a2 = b2 = (a+b)(a−b), 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 +b2 số chính phương:

25217 + 12 = 25218 không chính phương 25217 + 22 = 25221 không chính phương 25217 + 32 = 25226 không chính phương 25217 + 42 = 25233 không chính phương 25217 + 52 = 25242 không chính phương 25217 + 62 = 25218 không chính phương 25217 + 72 = 25266 không chính phương 25217 + 82 = 25281 = 1592 Đã thấy! **chính phương**. Khi đó ta tính được

25217 = 1592 −82 = (159 + 8)(159−8) = 167ã151.

Nếu N là lớn, thì khó có thể chọn được giá trị ngẫu nhiên của b để N+b2 là số chính phương. Chúng ta cần tìm một phương pháp thông minh để chọn b. 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 một số bội sốkN của N bằng hiệu của hai số bình phương, vì nếu

kN = a2 −b2 = (a+b)(a−b),

thì đó là một cách hợp lý để phân tích N bởi vế phải của đẳng thức, nghĩ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à UCLN(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ủa N +b2, với b = 1, ...,cho tới b = 100,ta sẽ không tìm được bất kỳ giá trị bình phương nào.

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

3ã203299 + 12 = 609898 khụng chớnh phương 3ã203299 + 22 = 609901 khụng chớnh phương 3ã203299 + 32 = 609906 khụng chớnh phương 3ã203299 + 42 = 609913 khụng chớnh phương 3ã203299 + 52 = 609922 khụng chớnh phương 3ã203299 + 62 = 609933 khụng chớnh phương 3ã203299 + 72 = 609946 khụng chớnh phương 3ã203299 + 82 = 609961 = 7812 Đó thấy! **chớnh phương**. Do đó

3ã203299 = 7812 −82 = (781 + 8)(781−8) = 789ã773, sau đó khi ta tính

UCLN(203299,789) = 263 và UCLN(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í dụ 1.5.2, chúng ta đã lập một dãy các giá trị của 3N +b2. Tại sao chúng ta không thử với 2N + b2 đầu tiên? Câu trả lời là nếu N là lẻ, thì 2n+ b2 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à 2N+b2 không bao giờ là một bình phương được thể hiện như sau Chúng ta tính toán với modun 4,

2N +b2 ≡ 2 +b2 ≡

2 + 0 ≡ 2 (mod 4) nếu b chẵn, 2 + 1 ≡ 3 (mod 4) nếu b lẻ.

Như vậy 2N+b2 đồng dư với 2 hoặc3 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ì 2N +b2 không là một là một bình phương.

Các bội số củaN đồng dư với 0 modun N, nên thay vì tìm hiệu của các bình phương a2 −b2 là một bội số của N, chúng ta có thể tìm các số a và b khác nhau, thoả mãn

a2 ≡ b2 (mod N). (1.10)

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 (1.10). 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 a1, a2, a3, ..., ar với tính chất ci ≡a2i (mod N) là tích của các số nguyên tố

nhỏ.

2. Phộp khử: Lấy tớch ci1ci2ã ã ãcis của một số c′ để 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 đú c1ci2ã ã ãcis = b2 là một số chính phương.

3. Tớnh UCLN: Cho a = ai1ai2ã ã ãais và tớnh UCLN d = UCLN(N,a−b). Từ a2 = (ai1ai2ã ã ãais)2 ≡a2i1a2i2ã ã ãa2is ≡ ci1ci2ã ã ãcis ≡ b2 (mod N),

có một trường hơp ngẫu nhiên hợp lý rằng d là mộ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 a2 mod N là tích của các số nguyên tố nhỏ. Đối với ví dụ này, ta cần a2 mod N là tích của các số nguyên tố trong tập {2,3,5,7,11}. Ta thấy

18692 ≡ 750000) (mod 914387) và 750000 = 24 ã3ã56, 19092 ≡ 901120) (mod 914387) và 901120 = 214ã5ã11, 33872 ≡ 499125) (mod 914387) và 499125 = 3ã53 ã113.

Không một số nào ở bên phải là bình phương, nhưng nếu ta nhân chúng với nhau, thì sẽ được một bình phương. Do đó

18692ã19092 ã33872 ≡ 750000ã901120ã499125 (mod 914387)

≡ (24 ã3ã56)(214 ã5ã11)(3ã53 ã113) (mod 914387)

= (29 ã3ã55 ã112)2

= 5808000002

≡ 1642552 (mod 914387).

Lưu ý là 1869ã1909ã3387 = 9835 (mod 914387), vỡ thế ta tớnh

UCLN(914387,9835−164255) = UCLN(914387,154420) = 1103.

Vậy 914387 = 1103ã829.

Ví dụ 1.5.5. Ta làm ví dụ thứ hai để minh hoạ sự khó khăn trong phương pháp này. Cho N = 636683. Ta tìm được

13872 ≡ 13720 (mod 636683) và 13720 = 23.5.73, 27742 ≡ 54880 (mod 636683) và 54800 = 25.5.73.

Nhân hai giá trị này ta được một bình phương, tuy nhiên, khi ta tính UCLN, ta thấy

UCLN(636683,1387ã2774−27440) = UCLN(636683,3820098) = 636683.

Như vậy sau khi tính xong vẫn không có tiến triển gì! Tuy nhiên, ta có thể tìm được nhiều hơn các giá trị a và tìm các mối quan hệ khác nhau. Mở rộng dãy ở trên, ta thấy rằng

33592 ≡459270 (mod 636683) và 459270 = 2ã38 ã5ã7.

Nhân 138722 và 335922, ta được

138722 ã335922 ≡13720ã459270 = (22 ã34 ã5ã72)2, bây giờ tính UCLN, ta được

UCLN(636683,1387ã3359−79380) = UCLN(636683,4579553) = 787.

Từ đõy ta cú phộp nhõn tử hoỏ N = 787ã809.

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:

1. Xây dựng quan hệ 2. Phép khử

3. Tính UCLN

Ta giả sử mỗi số a1, ..., ar tìm được trong Bước 1 thỏa mãn tính chất ci ≡ ai2 (mod m) phân tích thành tích của các số nguyên tố nhỏ - ta nói rằng mỗi ci 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à {p1, p2, p3, ..., pt}. Điều này có nghĩa là tồn tại các số mũ eij sao cho

c1 = pe111pe212pe313ã ã ãpet1t, c2 = pe121pe222pe323ã ã ãpet2t,

... ...

cr = pe1r1pe2r2pe3r3ã ã ãpetrt,

Mục đích của chúng ta là để có tích số của một số ci để 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 u1, u2, u3, ..., ur ∈ {0,1} sao cho

cu11 ãcu22ã ã ãcurr là số chớnh phương.

Ở đây chúng ta lấy ui = 1 nếu tính cả ci trong tích số, và lấy ui = 0 nếu không tính ci trong tích số.

Viết tích số dưới dạng của phép phân tích thừa số nguyên tố của c1, ..., cr

cho biểu thức khá cồng kềnh cu11 ãcu22ã ã ãcurr

= (pe111pe212pe313ã ã ãpet1t)u1 ã(pe121pe222pe323ã ã ãpet2t)u2ã ã ã(pe1r1pe2r2pe3r3ã ã ãpetrt)ur

= pe111u1+e21u2+ããã+er1ur ãpe212u1+e22u2+ããã+er2urã ã ãpet1tu1+e2tu2+ããã+ertur. (1.11) Biểu thức này sẽ dễ nhìn hơn nếu nó được viết bằng cách sử dụng tổng và tích, kí hiệu

r

Y

i=1

cuii =

t

Y

j=1

p

Pr

i=1eijui

j . (1.12)

Trong mọi trường hợp, mục tiêu của chúng ta là chọn u1, ..., ur sao cho tất cả số mũ trong (1.11) hay trong (1.12), là chẵn

Tóm lại, chúng ta có được các số nguyên

e11, e12, ..., e1t, e21, e22, ..., e2t, ..., er1, er2, ..., ert

và ta đi tìm các số nguyên u1, u2..., ur sao cho

e11u1 +e21u2 +ã ã ã+er1ur ≡ 0 (mod 2), e12u1 +e22u2 +ã ã ã+er2ur ≡ 0 (mod 2),

... ... (1.13)

e1tu1 +e2tu2 +ã ã ã+ertur ≡ 0 (mod 2).

Hệ đồng dư (1.13) chỉ là hệ phương trình tuyến tính trên trường hữu hạn F2. Do đó sử dụng tiêu chuẩn từ đại số tuyến tính, như phép khử Gauss để giải hệ phương trì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ân tích số

N = 9788111.

Ta tìm số a có tính chất a2 là 50−trơn, tức là, tìm số a sao cho a2 mod N bằng tí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ố a1, a2, ..., a20 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

ci ≡a2i (mod N).

Phần dưới của Bảng 1.5 chuyển điều kiện rằng tớch cu11cu22ã ã ãcu2020 phải là một bình phương thành hệ phương trình tuyến tính cho(u1, u2, ..., u20) như đã trình bày bởi (1.13). Để thuận tiện kí hiệu, chúng ta đã viết hệ phương trình tuyế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

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, để tiết kiệm không gian:

v1 = (0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0), v2 = (0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0), v3 = (0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0), v4 = (1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0), v5 = (1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0), v6 = (1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0), v7 = (1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0), v8 = (1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1).

Mỗi một vectơv1, ..., v8 cho một đồng dư thứca2 ≡ b2 (mod N) mà có khả năng để cho phép nhân tử hoá của N. Ví dụ, v1 cho biết nếu chúng ta nhân các số 3rd, 5th và 9th 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ật vậy ta thấy là

31312 ã31742ã34812

≡ (2ã52 ã7ã43)(5ã113ã43)(2ã53 ã7ã113) (mod 9788111)

= (2ã53 ã7ã113ã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ả UCLN 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 thừ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.

31292 ≡2530 (mod 9788111) và 2530 = 2ã5ã11ã23 31302 ≡8789 (mod 9788111) và 8789 = 11ã17ã47 31312 ≡15050 (mod 9788111) và 15050 = 2ã52ã7ã43 31662 ≡235445 (mod 9788111) và 235445 = 5ã72ã312 31742 ≡286165 (mod 9788111) và 286165 = 5ã113ã43 32152 ≡548114 (mod 9788111) và 548114 = 2ã73ã17ã47 33132 ≡1187858 (mod 9788111) và 1187858 = 2ã72ã17ã23ã31 34492 ≡2107490 (mod 9788111) và 2107490 = 2ã5ã72ã11ã17ã23 34812 ≡2329250 (mod 9788111) và 2329250 = 2ã53ã7ã113 35612 ≡2892610 (mod 9788111) và 2892610 = 2ã5ã7ã312ã43 43942 ≡9519125 (mod 9788111) và 9519125 = 53ã7ã11ã23ã43 44252 ≡4403 (mod 9788111) và 4403 = 7ã17ã37

44262 ≡13254 (mod 9788111) và 13254 = 2ã3ã472 44322 ≡66402 (mod 9788111) và 66402 = 2ã32ã7ã17ã31 44422 ≡155142 (mod 9788111) và 155142 = 2ã33ã132ã17 44682 ≡386802 (mod 9788111) và 386802 = 2ã33ã13ã19ã29 45512 ≡1135379 (mod 9788111) và 1135379 = 72ã17ã29ã47 45952 ≡1537803 (mod 9788111) và 1537803 = 32ã17ã19ã232 46512 ≡2055579 (mod 9788111) và 2055579 = 3ã23ã313 46842 ≡2363634 (mod 9788111) và 2363634 = 2ã33ã7ã132ã37

Bước thu thập quan hệ

1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0

 u1

u2

u3

u4

u5

u6

u7

u8

u9

u10

u11

u12

u13

u14

u15

u16

u17

u18

u19

u20

 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 (mod 2)

Bước khử đại số tuyến tính Bảng 1.5: Phân tích thừa số N = 9788111

Nhận xét 1.5.7. Để phân tích số lớnN,có lẽ là phải dùng tập hợp{p1, p2, p3, ..., pt} chứa hàng trăm ngàn, thậm chí hàng triệu các số nguyên tố. Thì hệ (1.13) chứa hàng triệu phương trình tuyến tính, và thậm chí còn thực hiện trong trường F2, có thể rất khó để giải hệ này. Tuy nhiên, nó chỉ ra rằng hệ phương trình tuyế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ết cá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ương trình tuyến tính thưa thớt mà hiệu quả hơn nhiều so với khử Gauss thường.

v1 = (0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0) 31312ã31742 ã34812 ≡(2ã53ã7ã113ã43)2

= 1001577502

UCLN(9788111ã3131ã3174ã3481−100157750) = 9788111 v2 = (0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

31302ã31312ã31662ã31742ã32152 ≡(2ã52ã73ã112ã17ã31ã43ã47)2

= 22101737850502

UCLN(9788111,3130ã3131ã3166ã3174ã3215−2210173785050) = 1 v3 = (0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0)

31312ã31662ã35612 ≡(2ã52ã72ã312ã43)2

= 1012413502

UCLN(9788111,3131ã3166ã3561−101241350) = 9788111 v4 = (1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0)

31292ã31312ã43942 ≡(2ã53ã7ã11ã23ã43)2

= 190382502

UCLN(9788111,3129ã3131ã4394−19038250) = 9788111 v5 = (1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0)

31292ã31312ã31742ã33132ã44322 ≡(22ã3ã52ã72ã112ã17ã23ã31ã43)2

= 9270637761002

UCLN(9788111,3129ã3131ã3174ã3313ã4432−927063776100) = 1 v6 = (1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0)

31292ã34492ã44262ã44422 ≡(22ã32ã5ã7ã11ã13ã17ã23ã47)2

= 33111678602

UCLN(9788111,3129ã3449ã4426ã4442−3311167860) = 1 v7 = (1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0)

31292ã33132ã34492ã44262ã46512 ≡(22ã3ã5ã72ã11ã17ã232ã312ã47)2

= 131360821145402

UCLN(9788111,3129ã3313ã3449ã4426ã4651−13136082114540) =2741 v8 = (1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1)

31292ã34492ã44252ã44262ã46842 ≡(22ã32ã5ã72ã11ã13ã17ã23ã37ã47)2

= 8575924757402

UCLN(9788111,3129ã3449ã4425ã4426ã4684−857592475740) = 1 Bảng 1.6: phân tích thừa số N = 9788111

CHƯƠNG2

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 để 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 = pq, 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 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 một cách chi tiế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ình bà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 để 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.

Một phần của tài liệu Phân tích thừa số nguyên tố và ứng dụng trong mật mã (Trang 24 - 34)

Tải bản đầy đủ (PDF)

(47 trang)