Phương pháp sinh số nguyên tố

Một phần của tài liệu nâng cao tốc độ tính toán của phương pháp mã hóa khóa công khai rabin (Trang 31 - 41)

1.4.2.1. Định nghĩa số nguyên tố

Định nghĩa: Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên dương nào ngoài số 1 và chính nó. Số nguyên lớn hơn 1 không phải là số nguyên tố gọi là hợp số.

Định lý: (Định lý cơ bản của số học) Mọi số nguyên lớn hơn 1 đều phân tích được một cách duy nhất thành tích các số nguyên tố, trong đó các thừa số được viết với thứ tự không giảm.

Chứng minh:

Xét tập F gồm tất cả các số nguyên lớn hơn 1 không biểu diễn được thành tích một số hữu hạn thừa số nguyên tố. Ta chỉ cần chỉ ra F= . Thật vậy, giả sử

F . Khi đó có số nguyên dương nhỏ nhất m thuộc F. Vì m F nên m phải là hợp số. Khi đó có hai số nguyên dương q1, q2 >1 để m = q1q2. Vì q1,q2 < m nên q1,q2

F. Như vậy ta có phân tích: q1 = t1t2 ... thq2 = u1u2 ... uk

Ở đó các ti, ui, đều là các số nguyên tố. Khi đó: m = q1q2 = t1t2 ... th u1u2 ... uk .

Điều này mâu thuẫn với giả thiết m F. Như vậy F phải là tập rỗng. Do đó mọi số tự nhiên lớn hơn 1 đều phân tích thành tích của hữu hạn thừa số nguyên tố.

Bây giờ giả sử một số được phân tích thành hai tích dạng AB các thừa số nguyên tố. Khi đó A = B. Bằng cách lược bỏ tất cả các thừa số nguyên tố xuất hiện trong cả AB, ta nhận được đẳng thức tương đương C=D. Ta cần phải chứng minh C=D=1.

Thật vậy giả sử trái lại C = D 1. Gọi p là thừa số nguyên tố xuất hiện trong

C. Khi đó p không thể là thừa số xuất hiện trong biểu thức tích của D. Có nghĩa là D

không phải là bội của p, và do đó C cũng không là bội của p (mâu thuẫn). Vậy C = D = 1. Điều này chứng tỏ rằng sự phân tích ra các thừa số nguyên tố của một số nguyên >1 là duy nhất nếu không kể đến thứ tự các thừa số.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

1.4.2.2. Phương pháp xác suất kiểm tra và sinh số nguyên tố * Thuật toán Fermat

Thuật toán Fermat là kiểm tra xác suất dựa trên định lý Fermat nhỏ (Fermat’s Little Theorem). Định lý được phát biểu như sau:

Định lý. (Định lý Fermat): Nếu p là số nguyên tố và a là số không chia hết cho p thì:

ap-1 = 1 (mod p)

Hệ quả:Nếu p là số nguyên tố và a là số nguyên dương thì: ap = a (mod p) Ví dụ: a = 2, 23-1 = 4 = 1 mod 3 24-1 = 8 = 0 mod 4 25-1 = 16 = 1 mod 5 26-1 = 32 = 2 mod 6 27-1 = 64 = 1 mod 7 28-1 = 128 = 0 mod 8 29-1 = 256 = 4 mod 9

Kết quả trên xác nhận khi p là số nguyên tố, thì 2p-1 = 1 mod p, và cũng cho một phỏng đoán rằng p không phải là số nguyên tố, thì 2p-1 1 mod p. Tuy nhiên phỏng đoán này lại không đúng, chẳng hạn như: n = 341 = 11 x 31 không phải là số nguyên tố, nhưng nó vẫn thoả mãn 2341-1 = 1 mod 341. Do vậy định lý Fermat với a = 2 có thể được sử dụng kiểm tra một số là hợp số nhưng không thể dùng để kiểm tra một số chắc chắn là số nguyên tố. Các số mà thoả mãn định lý Fermat mà không phải là số nguyên tố gọi là số giả nguyên tố và được định nghĩa một cách như sau:

Định nghĩa: Một số giả nguyên tố cơ sở a là một hợp số nguyên n thoả mãn công thức an-1 = 1 mod n.

Nếu số giả nguyên tố cơ sở a không tồn tại, thì định lý Fermat cho một cách rất đơn giản để kiểm tra số nguyên tố: một số n là số nguyên tố nếu và chỉ nếu an-1 =1 mod n. Đáng tiếc số giả nguyên tố cơ sở a lại tồn tại với mọi cơ sở, vì vậy định

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

lý Fermat chỉ cho một cách kiểm tra thiên về hợp số. Thuật toán như sau:

Nếu một số vượt qua kiểm tra số giả nguyên tố với vài cơ sở thì khả năng nó là số nguyên tố khá chắc chắn (vẫn có một xác suất nào đó).

Thuật toán Fermat được xây dựng trên cơ sở thuật toán kiểm tra thiên về hợp số ở trên. Nó sẽ kiểm tra một số n là giả nguyên tố với k cơ sở được chọn một cách ngẫu nhiên và kết luận là một số nguyên tố với xác suất nào đó nếu và chỉ nếu nó vượt qua k kiểm tra. Thuật toán như sau:

Thuật toán pseudoprime có độ phức tạp thời gian là O(logn). Thuật toán kiểm tra Fermat thực hiện thuật toán pseudoprime k lần vì vậy độ phức tạp thời gian

O(k . logn) hay O(k . s). Do vậy nó là thuật toán xác suất kiểm tra số nguyên tố rất hiệu quả.

* Thuật toán Solovay – Strassen

Định nghĩa 1: Thặng dư bậc hai (quadratic residue) mod n là một số nguyên a thoả mãn phương trình x2 = a mod n có nghiệm x. Ngược lại a là bất thăng dư bậc hai mod n.

Ví dụ: Số 4 là thặng dư mod 532 = 9 = 4 mod 5. Trong trường hợp khác, Số 3 là bất thặng dự bởi vì không có số nguyên nào trong tập hợp {0, 1, 2, 3, 4} bình phương bằng 3 mod 5. Ở đây xin nhắc lại khái niệm vẻ ký hiệu Legendre và Jacobi:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ hiệu Legendre p a như sau: 0 if 1 if is mod 1 p a a a a quadractic residue p p otherwise

Định nghĩa 3: với n 1 lẻ và mọi số nguyên a 0. Giả sử n có triển khai chính tắc thành thừa số nguyên tố là n = p1x1p2x2...pkxk, thì ký hiệu Jacobi được định nghĩa như sau:

p a = 1 1 x p a 2 2 x p a ... xk k p a

Khi n = p là số nguyên tố thì giá trị của ký hiệu Legendre Jacobi là như nhau.

Định lý: (tiêu chuẩn Euler)nếu n là số nguyên tố lẻ, thì:

n a

= a(n-1)/2 mod n với a thoả mãn 1 a n-1.

Định nghĩa 4: với n là một hợp số nguyên lẻ. Nếu gcd(a,n)>1hoặc a(n-1)/2

n a

mod n, thì a là bằng chứng Euler (Euler witness) n là hợp số. Mặt khác, nếu

gcd(a, n) =1 và a(n-1)/2 =

n a

mod n, thì a là giả mạo Euler (Euler liar) của n.

Sau đây là thuật toán xác định a là bằng chứng Euler(Euler witness) của n là hợp số:

Bước đầu tiên của thuật toán là tính r = a(n-1)/2 mod n, giống như với thuật toán Fermat. Nếu r = 1 mod n, thì r2 = an-1 =1mod n, nên n là hợp số bằng thuật

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

toán Fermat. Bước tiếp theo là tính Jacobi

n a

và so sánh với r. Nếu không bằng

nhau thì n là một hợp số theo tiêu chuẩn Euler. Ngược lại, thì n là số nguyên tố với xác suất nào đó.

Chú ý có một vấn đề xuất hiện ở đây là việc tính Jacobi

n a

.

Giống như thuật toán Fermat, thuật toán Solovay-Strassen một số nguyên n

là hợp số bằng cách thực hiện thuật toán euler-witness với vài giá trị ngẫu nhiên của

a. Nếu có k giá trị a cho trả lời đúng thì n là hợp số. Ngược lại thì k là số nguyên tố với xác suất nào đó, thuật toán được trình bày như sau:

Nó không hiệu quả để kiểm tra tất cả các giá trị có thể của a, nên chúng ta muốn biết sự giống nhau giữa cách chọn lựa của a như thế nào, nếu n là hợp số, một giá trị a ngẫu nhiên là bằng chứng Euler (Euler witness) cho n là hợp số. Trong kiểm tra Fermat, chúng ta tìm thấy một tập chắc chắn các số là số Carmichael, có rất ít bằng chứng. Định lý dưới đây sẽ đảm bảo rằng tiêu chuẩn Euler không giống số Carmichael. Định lý sử dụng phi hàm Euler:

Định lý: Nếu n là hợp số nguyên lẻ, thì có nhiều nhất (n)/2 giả mạo Euler (Euler liar) cho n trong đoạn [2, n-1].

Chúng ta biết rằng (n)<n, nên với mỗi hợp số n lẻ, ít hơn n/2 sự chọn lựa là giả mạo Euler (Euler liars), và do đó có ít nhất n/2 chọn lựa là bằng chứng (Euler witness). Điều này ngụ ý rằng nếu n là hợp số, thì có ít nhật 50% cơ hội cho mỗi giá trị ngẫu nhiên của a trong thuật toán Solovay-Strassen sẽ là bằng chứng (witness). Nếu kiểm tra phân loại một số là hợp số thì không có một sai sót nào. Nếu kiểm tra phân loại một số là số nguyên tố thì có thể là không chính xác. Xác suất sai được

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

cho bởi một hệ quả sau đây:

Hệ quả: Nếu thuật toán Solovay-Strassen với tham số n và k phân loại n là số nguyên tố, thì xác suất sai nhiều nhất là (1/2)k.

Vì vậy, chúng ta có thể đạt được xác suất n là số nguyên tố cao hơn đơn giản bằng cách tăng k lên một giá trị cần thiết. Hơn nữa, thuật toán Solovay-Strassen bảo đảo xác suất giống nhau của phân loại đúng bất chấp độ lớn của n. Điều này rất hữu ích vì chúng ta muốn tìm kiếm số nguyên tố lớn.

Để tiện theo dõi ở đây nhắc lại cách tính Jacobi:

Định lý: Với m, n >1 là số nguyên lẻ và với a, b là số nguyên bất kỳ. Thì ký hiệu Jacobi có các tính chất sau:

(i)

n a

=0, 1, hoặc -1. Hơn nữa,

n a

=0 nếu và chỉ nếu gcd(a, n) 1

(ii) n ab = n a n b (iii) mn a = m a n a

(iv) Nếu a=b mod n thì

n a = n b (v) n 1 =1 (vi) 1 1 1 /2 1 1 mod 4 1 3 mod 4 n if n if n n (vii) 2 1 2 1 /8 1 1 mod 8 1 3 mod 8 n if n if n n (viii) 1 1/4 3 mod 4 1 1 mod 4 1mod 4 m n n if m n m m n n m n if m or n m

Các tính chất này cho phép chúng ta định nghĩa đệ quy ký hiệu Jacobi. Nếu n là số lẻ, và a=2ka1, và a1 cũng là số lẻ, thì:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 1 1 1 / 4 1 1 1 mod 2 2 1 k k a n a n a a n n n n a

Định nghĩa đệ quy này được diễn giải bởi thuật toán sau, thuật toán hiệu quả để tính

n a

mà không cần phải phân tích n thành thừa số nguyên tố:

Thời gian chạy của thuật toán tính Jacobi là O(log2n). Thuật toán Euler-witness

thực hiện với hai phép tính chính: a(n-1)/2 mod n và

n a

. Sử dụng phương pháp bình phương liên tiếp, phép tính thứ nhất thực hiện trong thời gian O(log n), và phép tính thứ hai được xác định thực hiện trong thời gian là O(log2 n). Các toán tử so sánh có thời gian chạy coi như không đáng kể, vì vậy độ phức tạp thời gian của thuật toán euler-witness là O(log2 n). Kiểm tra Solovay-Strassen thực hiện thuật toán k lần nên có thời gian thực hiện là O(k. log2 n).

Với thuật toán Solovay-Strassen, chúng ta có (1/2)k khả năng phân loại sai cho thời gian thực hiện O(k. log2 n). Như vậy là chậm hơn thuật toán Fermat O(k.log n),

nhưng thuật toán Fermat không đưa ra một giá trị cụ thể nào đảm bảo sự chặc chắn của mình kể cả sự tồn tại của số Carmichael.

* Thuật toán Miller-Rabin

Thuật toán Miller Rabin là phiên bản sửa đổi của thuật toán Fermat sử dụng ý tưởng đơn giản trình bày dưới đây để tạo ra kiểm tra thiên về hợp số rất mạnh. Nó thay thế thuật toán Solovay-Strassen như là một chọn lựa đầu tiên để kiểm tra xác

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

suất vì hiệu quả cao hơn và xác suất chính xác cũng cao hơn.

Định lý:Nếu x2 = 1 mod n có nghiệm không tầm thường, thì n là hợp số.

Giống như giả nguyên tố, thuật toán kiểm tra an-1 = 1 mod n và phân loại là số giả nguyên tố nếu được. Cũng như vậy, tuy nhiên, nó cũng kiểm tra căn bậc hai không tầm thường (nontrivial square root) của 1 mod n bằng cách tính an-1 theo một cách riêng. Đầu tiên, nó biểu diễn n-1 = u.2t, u là số lẻ. Sau đó viết an-1 = au.2t = (au)2t được tính bằng cách bình phương liên tiến au tổng cộng t lần. Thuật toán đầu tiên tính au sử dụng bình phương liên tiếp (ordinary binary exponentiation), sau đó bình phương nó t lần, giữ lại giá trị hiện tại(cur) và giá trị cuối cùng (last) ở mỗi bước. Nếu cur = 1, thì last là thặng dư bậc hai (square root) của 1 mod n. Nếu last khác 1, hoặc -1, thì nó là bất thặng dư bậc hai (nontrivial square root) của 1 mod n, và do đó n là hợp số. Nếu mr-witness(a, n) trả về đúng (true), thì a là cơ sở cho n là hợp số.

Kiểm tra Miller-Rabin chỉ đơn giản chạy thuật toán mr-witness với k lần ngẫu nhiên chọn gia trị a. Nếu bất kỳ giá trị nào chứng tỏ n là hợp số thì n là hợp số, ngược lại n là số nguyên tố với xác suất nào đó:

Thuật toán thể hiện mạnh hơn kiểm tra Fermat, bởi vì nó sử dụng định lý ở trên để tăng cường kiểm tra hợp số. Định lý tiếp theo trình bày bằng chứng là những

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

thay đổi tạo ra dấu hiệu cho thấy kiểm tra xác suất số nguyên tố tốt hơn.

Định lý: nếu n là hợp số lẻ, thì số bằng chứng chứng tỏ n là hợp số ít nhất bằng 3/4 (n-1) .

Theo định lý này nếu n là hợp số thì ít nhất 75% khả năng chứng tỏ là hợp số với bất kỳ giá trị ngẫu nhiên của cơ sở. Kiểm tra Miller – Rabin sẽ chỉ có lỗi nếu nó chọn k cở sở kiểm tra từ tập hợp bằng chứng sai. Xác suất sai được phát biểu bởi hệ quả của định lý dưới đây:

Hệ quả: Nếu thuật toán Miller – Rabin với tham số n và k phân loại n là nguyên tố, thì xác suất sai nhiều nhất là (1/4)k.

Cũng như thuật toán Solovay–Strassen, xác suất sai độc lập với n. Ví dụ, nếu chọn k = 25, thì Miller – Rabin rất có khả nẳng tìm ra một bằng chứng cho n là hợp số, dù chỉ là một. Nếu nó không tìm được bằng chứng, thì xác suất n là nguyên tố với xác suất sai là (1/4)25 = 10-15.

Thuật toán mr-witness thực hiện với độ phức tạp thời gian O(log n), về bản chất nó tính an-1 mod n bằng phương pháp bình phương liên tiếp. Nghĩa là độ phức tạp của nó tương đương với thuật toán giả nguyên tố của kiểm tra Fermat, nhưng kiểm tra thiên về hợp số mạnh hơn. Thuật toán Miller–Rabin thực hiện mr-witness k

lần, nên độ phưc tạp thời gian là O(k . logn). Kiểm tra Miller–Rabin cho khả năng phân loại sai là (1/4)kvới độ phức tạp O(k. log n).

Vì đây là thuật toán xác suất tìm số nguyên tố tốt nhất hiện nay, nên trong luận văn này xin trình bày một số ví dụ minh hoạ

Ví dụ 1: Lấy n = 91 = 7.13, n-1=90=21.45, nên s=1. Chú ý 91 là hợp số

(a). Chọn ngẫu nhiên cơ sở a=10. Bắt đầu với b=1045 mod 91 = 90. Do đó thuật toán kết luận là số nguyên tố. Tuy nhiên, chúng ta biết rằng 91 không phải là số nguyên tố, vậy 10 là một cơ sở cho kết luận sai.

(b). Chọn ngẫu nhiên cơ sở a=29. Bắt đầu với b=2945 mod 91 = 1. Do đó thuật toán lại trả về kết quả đúng (true), và 29 cũng là một cơ sở cho kết luận sai.

(c). Cuối cùng, chọn a=2 bắt đầu với b=245 mod 91 = 57. Ở đây thuật toán không thể vào vòng lặp ( bởi vì s-1=0), thuật toán đến dòng 14, và từ đây cho kết

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

quả sai (false).

Vậy 91 được xác định là hợp số.

Ví dụ 2: Lấ y n=101, n-1=100=22.25, nên s=2. Chú ý 101 là s ố ngu yên tố

(a). Giả sử a=17, có b=100, và thuật toán kết luận là số nguyên tố. (b). Giả sử a=19, có b=1, và thuật toán kết luận là số nguyên tố.

Một phần của tài liệu nâng cao tốc độ tính toán của phương pháp mã hóa khóa công khai rabin (Trang 31 - 41)

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

(78 trang)