Chương 3 : Hệ mật mó khoỏ cụng khai
3.2 Cỏc thuật toỏn phõn tớch thừa số
3.2.1 Một số phương phỏp truyền thống
Phương phỏp chia thụng thường
í tưởng của phương phỏp là: “thực hiện việc chia liờn tiếp số cần phõn tớch n cho cỏc số nguyờn tố nhỏ”. Để tăng hiệu quả của bài toỏn, danh sỏch tất cả cỏc số nguyờn tố cú thể lưu vào một mảng trong mỏy. Cỏch khỏc trong quỏ trỡnh chia, thực hiện chia cho khụng chỉ cỏc số nguyờn tố (do thủ tục sinh tạo ra), mặc dự số lượng phộp chia sẽ phải thực hiện nhiều hơn, tuy nhiờn nú vẫn nhanh hơn so với việc dựng thủ tục (thủ tục sàng) để sinh cỏc số nguyờn tố. Cỏc số được chọn (ngoài cỏc số
nguyờn tố) cú dạng 6k 1 (cỏc số nguyờn cú dạng này sẽ bao gồm toàn bộ cỏc số nguyờn tố và cả cỏc số là hợp số, vớ dụ như: 25, 36, 49, ...). Dự cú nhiều số hợp số,
48 nhưng vũng lặp của chương trỡnh chạy rất nhanh; hơn nữa ta cú thể loại bỏ được số lượng đỏng kể thực hiện phộp kiểm tra xem số được chia cú thoả món hay khụng trước khi chia.
Phương phỏp phõn tớch sử dụng thuật toỏn Euclid
Thuật toỏn Euclid đó và vẫn đang được sử dụng trong hầu hết cỏc thuật toỏn phõn tớch số nguyờn. Một trong cỏc ứng dụng của nú là: Để tỡm cỏc thừa số của số n trong khoảng (g, G), ta nhõn tất cả cỏc thừa số nguyờn tố trong khoảng này với nhau, sau đú ỏp dụng thuật toỏn Euclid đối với tớch này và số n. Khi đú mọi thừa số nguyờn tố của n trong khoảng này sẽ được phỏt hiện. Vớ dụ, để tỡm tất cả cỏc thừa số nguyờn tố của N nhỏ hơn 1000.
Cỏch tỡm: với mọi i = 0 .. 9, tớnh d = UCLN(N, pi); Nếu d 1 thỡ d chớnh là một thừa số của N.
Sau đú N = N/d, rồi tớnh lặp lại.
Phương phỏp phõn tớch của Fermat
Phương phỏp phõn tớch của Fermat cũng là một trong những phương phỏp ra đời sớm nhất. Mặc dự trong trường hợp tổng quỏt phương phỏp này khụng hiệu quả, nhưng nú vẫn được xem xột bởi ý tưởng bờn trong của nú. ý tưởng của phương phỏp: là tỡm cỏch biểu diễn số nguyờn cần phõn tớch n (n là hợp số) thành hiệu của hai số bỡnh phương, dạng: x2 - y2. Nếu tỡm được x và y như vậy thỡ việc phõn tớch N coi như hoàn thành (vỡ khi đú n = (x-y)(x+y)).
Vấn đề đặt ra là liệu cú tồn tại biểu diễn của N như vậy khụng? Ta thấy, nếu tồn tại biểu diễn:
n = x2 - y2 (3.4)
thỡ x > n, vậy việc đầu tiờn là ta tớnh: m = n+1; x = m;
Nếu n là một số chớnh phương, tức n = x2 thỡ trong trường hợp đú ta cú biểu diễn của n là: n = x2 - 02.
49 Ngược lại, ta đặt zold = x2 - n, và kiểm tra xem zold cú là một số bỡnh phương khụng.
Nếu zold là một số bỡnh phương, thỡ ta đặt zold = y2 và ta thu được n = x2 – y2 và kết thỳc thuật toỏn.
Ngược lại, ta lại thử với giỏ trị khỏc của x, chẳng hạn x = m + 1, và tớnh:
x2 - n = (m+1)2 - n = m2 - n + 2m + 1 = zold + 2m + 1 (3.5) đặt znew = zold + 2m + 1
và kiểm tra xem: znew cú là số bỡnh phương khụng? Quỏ trỡnh này được lặp lại cho tới khi znew là một số bỡnh phương.
Phương phỏp phõn tớch của Legendre
Phương phỏp dựa trờn đặc điểm phõn biệt giữa số nguyờn tố và số hợp số.Để giải thớch cho điều này, ta xột đồng dư thức sau:
x2 y2 mod n (3.6)
Với mọi n là nguyờn tố hay hợp số thỡ phương trỡnh (3.6) bao giờ cũng cú hai nghiệm tầm thường là x y mod n. Nếu n là hợp số thỡ (3.6) cũn cú cỏc nhiệm khụng tầm thường khỏc, và chớnh cỏc nghiệm khụng tầm thường đú sẽ được sử dụng để tỡm cỏc thừa số của n.
Cỏch tỡm thừa số của n như sau:
Xột đồng dư thức: u2 y2 mod p, p là số nguyờn tố lẻ.
Nếu ta giả thiết y là số nguyờn cố định, y 0 mod p, khi đú đồng dư thức này sẽ cú chớnh xỏc 2 nghiệm là u y mod p, bởi theo định lý: “trong một vũng (ring) khụng cú thừa số 0, phương trỡnh bậc n,
P(x) = an xn + an-1 xn-1 + ... + a1 x + a0 = 0, (3.7) an 0 cú đỳng n nghiệm”.
50 Trong đú, vũng được định nghĩa là tập đúng với cỏc phộp toỏn: cộng, trừ và nhõn. Theo định nghĩa này, ta thấy phộp toỏn mod thỡ modulo cũng tạo thành một vũng.
Hơn nữa, ta cú u và -u thuộc vào 2 lớp thặng dư khỏc nhau theo modun p, bởi nếu u -u mod p thỡ suy ra 2.u 0 mod p u 0 mod p (vỡ ta đó giả thiết p là số nguyờn tố lẻ nờn 2 khụng thể là ước của p) u là ước của p, nhưng điều này
mõu thuẫn với điều kiện u là thặng dư bậc hai của p (UCLN(u, p) = 1). Do đú suy ra, u và -u thuộc vào hai lớp thặng dư khỏc nhau theo modun p, tức là u và -u là hai nghiệm phõn biệt của phương trỡnh.
Xột cặp đồng dư thức sau:
u2 y2 mod p, p là số nguyờn tố ≠2
v2 y2 mod q, q là số nguyờn tố ≠2, q p.
theo giải thớch ở trờn, ta cú mỗi đồng dư thức này sẽ cú 2 nghiệm phõn biệt. Vỡ vậy, đồng dư thức x2 y2 mod pq sẽ cú 4 nghiệm, cỏc nghiệm này cú thể tỡm theo định lý phần dư Trung Hoa:
q y v p y u mod mod
cho nghiệm x y mod pq (3.8)
q y v p y u mod mod
cho nghiệm x -y mod pq (3.9)
q y v p y u mod mod
cho nghiệm x z mod pq (3.10)
q y v p y u mod mod
cho nghiệm x -z mod pq (3.11)
Do đú, nếu n = p.q thỡ đồng dư thức x2 y2 mod pq sẽ cú một cặp nghiệm khụng tầm thường là x z mod pq và một cặp nghiệm tầm thường là x y mod pq.
51 Túm lại: cỏch tỡm thừa số p của n là tỡm cặp nghiệm khụng tầm thường của x2 y2 mod n; từ x2 - y2 0 mod n suy ra (x - y)(x + y) 0 mod pq (x - y) hoặc (x + y) khụng thể đồng thời là ước của p và q được mà chỉ một trong chỳng là ước của p cũn lại sẽ là ước của q. Khi đú thừa số p hoặc q sẽ được tỡm bằng thuật toỏn Euclid đối với x+y và n.
Trường hợp n cú nhiều hơn 2 thừa số nguyờn tố, thỡ ta lại ỏp dụng thuật toỏn trờn cho phần cũn lại của n sau khi đó tỡm được một thừa số ở bước trờn.
Phương phỏp phõn tớch của Euler
Đõy là phương phỏp phõn tớch chỉ ỏp dụng cho cỏc số nguyờn cú thể viết được dưới dạng n = a2 + Db2 theo 2 cỏch khỏc nhau:
(x2 + Dy2)(u2 + Dv2) = 2 2 2 2 xv yu D Dyv xu xv yu D Dyv xu (3.12)
Cụng thức này chỉ ra rằng, tớch của 2 số nguyờn cú dạng a2 + Db2 cũng là một số nguyờn cú cựng dạng, và tớch này cũng cú hai cỏch biểu diễn dạng r2 + Ds2 khỏc nhau.
Euler đó chứng minh được rằng: “Nếu n là số nguyờn cú hai cỏch biểu diễn dạng r2+Ds2 khỏc nhau là n = a2 + Db2 và n = c2 + Dd2 với UCLN(bd, n) = 1 thỡ n cú thể viết được dưới dạng tớch của 2 số cú cựng dạng với n”.
Cỏc thừa số của n cú thể tỡm như sau:
Từ: a2d2 -Db2d2 b2c2 mod n, (3.13) cỏc thừa số của n sẽ là: UCLN(n,ad-bc) và UCLN(N,ad+bc).
Thuật toỏn để tỡm biểu diễn dạng r2 + Ds2 của n hoàn toàn tương tự thuật toỏn trong phương phỏp phõn tớch của Fermat. Sau bước này, việc tỡm biểu diễn thứ hai của n dạng r2 + Ds2 sẽ dựa vào D đó biết. Nếu D > 0 thỡ thuật toỏn sẽ cú nhiều nhất là n/Dbước.