Tải bản đầy đủ - 34 (trang)
3 Phân tích Pollard p-1

3 Phân tích Pollard p-1

Tải bản đầy đủ - 34trang

17



1.3



Phân tích Pollard p − 1



Phương pháp phân tích Pollard p − 1 được giới thiệu bởi Pollard J.M. năm

1974 (xem Weisstein E.W. [8]). Nó dựa trên Định lí Fermat nhỏ được phát

biểu như sau:

Định lí 1.3.1 (Định lí Fermat nhỏ). Nếu p là một số nguyên tố, a là một số

tự nhiên và p | a thì a p−1 ≡ 1 (mod p).

Giả sử chúng ta có một số nguyên dương k ≥ 1 và một số nguyên tố

p > 2 sao cho (p − 1) | k!. Bây giờ ta áp dụng Định lí Fermat nhỏ với a = 2,

2 p−1 ≡ 1 (mod p).

Nhưng do (p − 1) | k! nên ta có thể viết k! = (p − 1)q với một số nguyên

dương q nào đó. Ta có

2k! ≡ (2 p−1 )q ≡ 1q ≡ 1 (mod p).

Do vậy p | 2k! − 1. Nếu N là một số nguyên có nhân tử nguyên tố không

tầm thường p, thì p là ước của 2k! − 1 + Nt với mọi số nguyên t. Ta có thể

tính xk ≡ 2k! − 1 (mod N) với k = 1, 2, 3, . . . , và với mỗi xk kiểm tra xem

có tồn tại một số nguyên rk = gcd(xk , N) mà là ước của cả xk và N. Nếu

(p − 1) | k! thì p | xk và do đó rk là một nhân tử không tầm thường của N.

Nếu rk không phải là một nhân tử không tầm thường của N, thì nó là một

nhân tử tầm thường của N, tức là rk = 1 hoặc rk = N. Thuật toán như sau:

• Tính rk = gcd(2k! − 1, N) với k = 1, 2, 3 . . .. Nếu rk ∈

/ {1, N} thì rk là

một nhân tử không tầm thường và ta hoàn thành công việc cần làm.



18

• Ta có thể viết 2k! ≡ (2(k−1)! )k (mod n), sao cho nếu 2(k−1)! là đã biết

theo (mod n), thì 2k! có thể tính được chỉ với một phép toán lũy thừa

modulo một số.



Ta trình bày thuật toán.



function pollard_p1(N)

# Initial value 2^(k!) for k = 0.

two_k_fact := 1

for k from 1 to infinity

# Calculate 2^(k!) (mod N) from 2^((k-1)!).

two_k_fact := modPow(two_k_fact, k, N)

rk := gcd(two_k_fact - 1, N)

if rk <> 1 and rk <> N then

return rk, N/rk

end if

end for

end function



Trong đó modPow(a, b, m) lại là số nguyên nhỏ nhất không âm sao cho

ab ≡ y (mod m). Hàm này được gọi là “số mũ modular”.

Ta trình bày thuật toán hiệu quả đối với số mũ modular. Ta viết b trong

hệ nhị phân dưới dạng

b = b0 20 + b1 21 + . . . + bn−1 2n−1



19

và thấy rằng ab có thể viết lại dưới dạng

0



1



ab = ab0 2 ab1 2 . . . 2bn−1 2

Chú ý với mỗi k, a2



k



bk



n−1



0



= a2



b0



1



a2



b1



. . . a2



n−1



bn−1



.



k



là 1 nếu bk = 0 và a2 nếu ngược lại. Do đó ta có

n−1



b



a =







k



a2 .



k=0, bk =0



Chú ý rằng a2



k+1



k



= a2·2 = a2



k



2



. Bằng phương pháp bình phương liên



tiếp, ta có thể thiết kế một thuật toán tìm kiếm số tự nhiên nhỏ nhất sao cho

ab ≡ y (mod m).



function modPow(a, b, m):

ans := 1

a := a % m

for k from 0 to infinity

if 2^k>b then

return ans

end if

if (bit k of b is nonzero) then

ans := (ans * a) % m

a := (a * a) % m

end for

end function



20



Chương 2



Một số thuật toán hiện đại

phân tích số nguyên

Trong Chương 2 này, chúng tôi sẽ thảo luận về một số thuật toán hiện

đại phân tích số nguyên.



2.1



Sự kiểm tra ước



Sự kiểm tra ước là thuật toán đơn giản nhất để phân tích số nguyên. Giả

sử rằng s và t là các nhân tử không tầm thường của N sao cho st = N và

s ≤ t. Để thực hiện thuật toán kiểm tra ước, một cách đơn giản là kiểm tra



xem s | N với s = 2, . . . , N . Khi một nhân tử như vậy s được tìm thấy

thì t = N/s cũng là một nhân tử, và một phép phân tích đã được tìm thấy

cho N. Ràng buộc trên s ≤ N được cung cấp bởi định lí sau đây:

Định lí 2.1.1. Nếu N có nhân tử không tầm thường s, t với st = N và s ≤ t,



thì s ≤ N.

Chứng minh. Do s là nhân tử của N nên ta có s > N. Khi đó t ≥ s >





N,



21

và st > N, mà điều này lại mâu thuẫn với giả thiết rằng st = N. Do đó

s ≤ N.

Thuật toán như sau

function trialDivision(N)

for s from 2 to floor(sqrt(N))

if s divides N then

return s, N/s

end if

end for

end function

Nếu thuật toán này cho hợp số N, thì nó đưa ra một cặp nhân tử không tầm

thường s, t với s ≤ t. Phát biểu s | N tương đương với s ≡ 0 (mod N).



2.2



Thuật toán phân tích ρ của Pollard



Phương pháp phân tích ρ của Pollard là một phương pháp xác suất để phân

tích một hợp số N bởi phép lặp một modulo đa thức N. Phương pháp này

được công bố bởi J.M. Pollard năm 1975. Giả sử chúng ta xây dựng dãy

x0 ≡ 2 (mod n),

xn+1 ≡ xn2 + 1 (mod n).

Dãy này là dãy tuần hoàn kể từ một chỉ số nào đó. Có thể chứng minh rằng

độ dài của chu trình nhỏ hơn hoặc bằng N bằng phương pháp phản chứng:



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

3 Phân tích Pollard p-1

Tải bản đầy đủ ngay(34 tr)

×