Vấn đề phõn tớch một số ra thừa số nguyờn tố là rất quan trọng đối với một số hệ mật mó trong an toàn bảo mật thụng tin. Độ khú của cỏc hệ mật mó này phụ thuộc nhiều vào việc cú giải đƣợc bài toỏn phõn tớch ra thừa số nguyờn tố của một số hay khụng. Nhƣ cỏc hệ mật mó RSA, hệ mật mó RABIN… Ta cú thể hiểu bài toỏn phõn tớch một số ra thừa số nguyờn tố nhƣ sau:
Định nghĩa 2.1
Phõn tớch một số nguyờn dương ra thừa số nguyờn tố là đưa ra một số nguyờn dương n và tỡm thừa số của nú. Cú thể viết theo cụng thức như sau
trong đú pi là những cặp số nguyờn tố riờng biệt và ei ≥ 1
Đối với một số nguyờn nguyờn dƣơng thỡ việc kiểm tra nú cú phải số nguyờn tố hay là hợp số thỡ dễ dàng hơn việc phõn tớch một số ra thừa số nguyờn tố. Nhƣ vậy trƣớc khi phõn tớch một số nguyờn dƣơng ra thừa số nguyờn tố thỡ ta nờn kiểm tra xem nú cú phải là số nguyờn tố hay khụng.
Sau đõy chỳng ta sẽ tỡm hiểu một vài thuật toỏn phõn tớch thừa số tốt nhất hiện thời và cỏch sử dụng chỳng trong thực tế. Ba thuật toỏn hiệu quả nhất trờn cỏc số lớn là sang bậc hai, thuật toỏn đƣờng cong elliptic và sang trƣờng số. Cỏc thuật toỏn nổi tiếng khỏc (những thuật toỏn cú trƣớc) bao gồm phƣơng phỏp p và thuật toỏn p-1 của pollard, thuật toỏn p+1 của Williams, thuật toỏn kiờn phõn số và dĩ nhiờn cả những phộp chia thử. Ở đõy chỳng ta cú thể coi số nguyờn n cần phõn tớch ra thừa số là một số lẻ. Phộp chia thử bao gồm việc chia n cho từng số nguyờn lẻ cho tới . Nếu n < 1012 thỡ đõy là một phƣơng phỏp phõn tớch số một cỏch hoàn hảo, tuy nhiờn với n
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
lớn hơn 1012 chỳng ta phải dựng cỏc thuật toỏn tinh thế hơn. Sau đõy chỳng ta sẽ tỡm hiểu cỏc thuật toỏn cụ thể.
a. Phƣơng phỏp p-1
Thuật toỏn p-1 của pollar (đƣa ra vào năm 1947) là một thớ dụ cụ thể về một thuật toỏn đơn giản khi đựoc ỏp dụng với cỏc số nguyờn lớn. Thuật toỏn này (hỡnh 2.1) cú hai đầu vào: số nguyờn lẻ n cần đƣợc phõn tớch và một cận B. Cú thể mụ tả thuật toỏn nhƣ sau:
Hỡnh 2.1 Thuật toỏn Pollar
Giả sử p là ƣớc nguyờn tố của n, và q ≤ B, với mỗi mũ nguyờn . Khi đú Ở cuối vũng lặp for (bƣớc 2) Nờn Vỡ nờn theo định lý Fermat ta cú Vỡ nờn (trong bƣớc 3). Bởi ở bƣớc 4 và do đú = gcd(a-1,n) Đầu vào: n và B 1. a=2 2. For j=2 to B do A=aj mod n 3. d=ƢCLN(a-1,n) 4. ifi <d<n then d là một thừa số của n (thành cụng) else khụng tỡm đƣợc thừa số của n (khụng thành cụng)
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Số nguyờn d sẽ là ƣớc khụng tầm thƣờng của n (trừ phi a = 1 ở bƣớc 3). Saukhi đó tỡm đƣợc d, ta sẽ tiếp tục phõn tớch d và nếu chỳng là hợp số.
Vớ dụ 2.6
Giả sử n = 15770708441. Nếu ỏp dụng thuật toỏn p-1 với B = 180 thỡ sẽ thấy rằng a = 11620221425 ở bƣớc 3, cũn d đƣợc tớnh bằng 135979. Trờn thực tế phõn tớch đầy đủ n thành cỏc ƣớc nguyờn tố là: 15770708441 = 135979 x 115979 Trong trƣờng hợp này, phộp phõn tớch sẽ thành cụng do 135979 chỉ gồm cỏc thừa số nguyờn tố nhỏ Vỡ thế 135978 = 2 x 3 x 131 x 173
Nếu lấy B ≥ 173 thỡ chắc chắn rằng nhƣ mong muốn
Trong thuật toỏn cú (B-1) lũy thừa theo modulo, mỗi lũy thừa nhiều nhất là 2log2B phộp nhõn modulo dựng thuật toỏn bỡnh phƣơng và nhõn. Việc tớnh ƣớc chung lớn nhất cú thể thực h iện trong thời gian O(BlogB(logn)2+log(n)3. Nếu B là O((logn)i) với mỗi số nguyờn i xỏc định nào đú thỡ thuật toỏn thực sự là thuật toỏn thời gian đa thức, tuy nhiờn với phộp chọn B nhƣ vậy, xỏc suất thành cụng sẽ rất nhỏ. Mặt khỏc, nếu tăng kớch thƣớc của B lờn thật lớn (chẳng han tới ) thỡ thuật toỏn sẽ thành cụng nhƣng nú sẽ khụng thực hiện nhanh hơn phộp chia thử.
Nhƣ vậy, điểm bất lợi của thuật toỏn này là nú yờu cầu n phải cú ƣớc nguyờn tố p sao cho (p-1) cứa cỏc thừa số nguyờn tố bộ. Ta cú thể dễ dàng xõy dựng đƣợc hệ mật RSA (sẽ giới thiệu chi tiết ở phần sau) với modulo n = pq hạn chế đƣợc việc phõn tớch theo phƣơng phỏp này. Trƣớc tiờn tỡm một số nguyờn tố lớn p1 sao cho p = 2p1+ 1 cũng là số nguyờn tố (nhờ dựng một trong cỏc thuật toỏn kiểm tra tớnh nguyờn tố monte – Carlo). Khi đú modulo của RSA n =pq sẽ chống đƣợc cỏch phõn tớch theo phƣơng phỏp p-1
Thuật toỏn đƣờng cong elliptic mạnh hơn (đƣợc Lenstra xõy dựng vào những năm 1980) trờn thực tế là sự tổng quỏt của phƣơng phỏp p-1. Ta sẽ thảo luận sõu về lý thuyết ở cỏc phần tiếp theo, ở đõy chỉ nhấn mạnh rằng thành cụng của phƣơng phỏp đƣờng cong elliptic tựy thuộc vào tỡnh huống tƣơng tự: Một số nguyờn “gần
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
với p” chỉ cú cỏc thừa số nguyờn tố bộ. Trong khi phƣơng phỏp p-1 phụ thuộc vào quan hệ trong Zp thỡ phƣơng phỏp đƣờng cong elliptic phụ thuộc vào cỏc nhúm xỏc định trờn cỏc đƣờng cong elliptic theo modulo n.
b. Thuật toỏn Dixon và sang bậc hai
Thuật toỏn Dixon đƣợc xõy dựng trờn ý tƣởng đơn giản là: nếu tỡm đƣợc x ≠ ± y (mod n) sao cho (mod n) thỡ gcd(x-y,n) là ƣớc khụng tầm thƣờng của n.
Phƣơng phỏp này sử dụng cơ sở nhõn tử là một tập B chứa cỏc số nguyờn tố bộ. Trƣớc tiờn ta nhận đƣợc một vài số nguyờn tố x sao cho tất cả cỏc thừa số nguyờn tố của x2 (mod n) nằm trong cơ sở B (cỏch thực hiện điều này sẽ đƣợc thảo luận sau). í tƣởng thực hiện ở đõy là lấy tớch của một vài giỏ trị sao cho mỗi số nguyờn tố trong cơ sở đƣơc sử dụng mọt số chẵn lần. Điều này dẫn đến một đồng dƣ thức dạng mong muốn (mod n) mà ta hy vọng sẽ đƣa đến việc phõn tớch n.
Ta sẽ minh họa bằng một vớ dụ đó đƣợc dự tớnh kĩ lƣỡng. Vớ dụ 2.7
Giả sử n = 15770708441. Giả sử b = {2, 3, 5, 7, 11, 13}. Xột ba đồng dƣ thức sau: 83409341562 3 x 7 (mod n)
120449429442 1 x 7 x 13 (mod n) 27737000112 2 x 3 x 13 (mod n) Nếu lấy tớch của ba đồng dƣ thức trờn:
(8340934156 x 12044942944x 2773700011)2 (2 x 3 x 7 x 13)2 (mod n) Rỳt gọn cỏc biểu thức trờn trong cỏc dấu ngoặc theo modulo n, ta cú:
95034357852 5462 (mod n) Sau đú tớnh
gcd(9503435785-546, 15770708441) = 115759 Ta thấy thừa số 115759 là một thừa số của n
Giả sử B = {p1…pB} là một cơ sở nhõn tử. Giả sử c lớn hơn B một chỳt (chẳng hạn C = B + 10) và giả sử ta đó cú đồng dƣ thức:
Với 1 ≤ j ≤ c. Với mỗi i xột vector:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Nếu cú thể tỡm đƣợc một tập con cỏc aj sao cho tổng theo modulo 2 là vector (0,…0) thỡ thớch của cỏc xj tƣơng ứng sẽ sử dụng mỗi nhõn tử trong B một số chẵn lần.
Ta sẽ minh họa bằng cỏch trở lại vớ dụ trờn. Trong trƣờng hợp này nếu C < B, vẫn tỡm đƣợc sự phụ thuộc tuyến tớnh Vớ dụ 2.9 Cho 3 vector a1, a2, a3: a1 = (0, 1, 0, 1, 0, 0 ) a2 = (1, 0, 0, 1, 0, 1 ) a3 = (1, 1, 0, 0, 0, 1 ) Dễ dàng thấy rằng: a1+a2 + a3 = (0, 0, 0, 0, 0, 0) mod 2
Đõy là lý do cho thấy đồng dƣ thức (thiết lập theo tớch) sẽ phõn tớch thành cụng đƣợc n.
Nhận thấy rằng, bài toỏn tỡm một tập con C vector a1 , a2, …, ac sao cho tổng theo modulo 2 là một vector toàn chứa số 0 chớnh là bài toỏn tỡm sự phụ thuộc tuyến tớnh (trờn Z2) của cỏc vector này. Với c > B + 1 là lý do khụng cú gỡ đảm bảo để đồng dƣ thức cho trƣớc bất kỳ sẽ tạo đƣợc phõn tớch n. Khoảng 50% thuật toỏn cho ra ±y (mod n). Tuy nhiờn nếu c > B+1 thỡ cú thể nhận đƣợc một vài đồng dƣ thức nhƣ vậy (nảy sinh từ cỏc phụ thuộc tuyến tớnh khỏc của cỏc aj). Hy vọng là ớt nhất một trong cỏc đồng dƣ thức kết quả sẽ dẫn đến việc phõn tớch n.
Vấn đề cũn lại là phải làm thế nào để nhận đƣợc cỏc số nguyờn xj mà cỏc giỏ trị xj2 (mod n) cú thể phõn tớch hoàn toàn trờn cơ sở B. Một vài phƣơng phỏp cú thể thực hiện đƣợc điều đú. Biện phỏp sang bậc hai do Pomerance đƣa ra dựng cỏc số nguyờn dạng xj = j+[ ], j = 1, 2… Tờn “sang bậc hai” lấy từ thủ tục sàng (khụng mụ tả ở đõy) dựng để xỏc định cỏc xj phõn tớch đƣợc trờn B.
Ở đõy dĩ nhiờn là một sự thỏa hiệp: Nếu b = là một số lớn thỡ thớch hợp hơn cả là nờn phõn tớch số nguyờn xj trờn B. Tuy nhiờn b càng lớn thỡ ta càng phải gom nhiều đồng dƣ thức hơn trƣớc khi cú thể tỡm đƣợc một quan hệ phụ thuộc. Lựa chọn tối ƣu cho b xấp xỉ bằng:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Và điều này dẫn đến thời gian thực hiện cỡ
Sàng trƣờng số là thuật toỏn phõn tớch mới hơn (từ cuối những năm 80). Thuật toỏn này cũng phõn tớch n bằng cỏch xõy dựng một đồng dƣ thức (mod n), song nú đƣợc thực hiện bằng cỏc tớnh toỏn trờn vành cỏc số đại số.