Một số thuật toán kiểm tra tính nguyên tố theo xác suất

Một phần của tài liệu Luận văn thạc sĩ nghiên cứu kiến trúc và xây dựng hệ thống chứng thực tập trung (Trang 125 - 130)

 Nội dung của chương này tập trung nghiên cứu các bài toán quan trọng cần giả

6.4.2 Một số thuật toán kiểm tra tính nguyên tố theo xác suất

6.4.2.1 ThuậttoánFermat

thì ��−1 ≡1(����). Do đó, cho trước một số nguyên �, nếu tìm được một giá trị � sao cho ��−1 ≢1(��� �) thì � chắn chắn là hợp số. Chiều ngược lại của định lý không đúng, nghĩa là nếu một số nguyên � thỏa ��−1 ≡ 1(����) thì chưa chắc � là số nguyên tố. Trong trường hợp này ta gọi � là số giả nguyên tố cơ sở �. Thuật toán kiểm tra Fermat như sau [40, tr.136-137]:

Fermat(n,t)

Đầu vào: số nguyên lẻ � ≥ 3 và tham số an toàn � ≥ 118.

Đầu ra: n là “sốnguyêntố” hay “hợpsố

(1) Vớimỗi� =1→�

(1.1) Chọn một số ngẫu nhiên �, 2 ≤�≤�−2. (1.2) � ←��−1����.

(1.3) Nếu �≠1 thì trả về “hợp số”. (2) Trả về “số nguyên tố”.

Thuậttoán6.3.KiếmtratínhnguyêntốtheoxácsuấtFermat

18Nếuxácsuấtđểmộthợpsốvượtquaphépthử(đượckếtluậnlàsốnguyêntố)là�≤1thìxác suấtđểnóvượtqua�phép

thửlà��(rấtthấpkhi�lớn).

103

Do khôngthể nàokiểm trahết mọigiá trị� nên khi thuậttoán nàykết luận � là“số nguyên tố” thì không có bằng chứng nào chứng minh � thật sự là số nguyên tố. Một số� làsốgiả nguyêntốvớinhiềucơ sở� thìkhảnăng nólàsốnguyên tốlàrấtlớn. Tuy nhiên, tồn tại các số giả nguyên tố với mọi cơ sở a, đó là số Carmichael. Số

Carmichael là hợp số nguyên � thỏa mãn ��−1 ≡ 1(����) với mọi số nguyên

dương�saocho(�,�)= 1.

Nhưvậy,kiểmtraFermatsẽkếtluậnsaikhigặpcácsốCarmichael.Phầntiếptheosẽ trình bày các thuật toán kiểm tra mạnh hơn thường được sử dụng.

6.4.2.2 ThuậttoánSolovay-Strassen

Robert Solovay và Volker Strassen đã phát triển thuật toán kiểm tra tính nguyên tố theo xác suất [55]. Thuật toán này sử dụng ký hiệu Jacobi phục vụ cho việc kiểm tra xem � có phải là số nguyên tố hay không.

Thuật toán kiểm tra Solovay-Strassen như sau [40, tr.137-138]:

Solovay-Strassen(n,t)

Đầura: n là “sốnguyêntố” hay “hợpsố” (1) Vớimỗi� =1→� (1.1) Chọn một số ngẫu nhiên �, 2 ≤�≤�−2. (1.2) � ←��−1����. (1.3) Nếu �≠1 thì trả về “hợp số”. (2) Trả về “số nguyên tố”.

Thuậttoán6.4.KiểmtratínhnguyêntốtheoxácsuấtSolovay-Strassen

Nếu � là hợp số, xác suất của số ngẫu nhiên � cho biết � chắc chắn không là số nguyêntốkhôngíthơn50%. Lậplạiphépthử�lầnvới� giátrịngẫunhiênkhácnhau

2.

Đây là thuật toán được sử dụng phổ biến đầu tiên cùng với sự phát triển của hệ mã khóa công khai, đặc biệt là hệ mã RSA. Tuy nhiên, hiện nay nó được thay thế bởi thuật toán Miller Rabin hiệu quả hơn và luôn cho kết quả chính xác.

6.4.2.3 ThuậttoánMillerRabin

Thuật toán khá dễ hiểu và được nhiều người sử dụng được phát triển bởi Michael Rabin, dựa trên một phần ý tưởng của Gary Miller [41], [46]. Đây là thuật toán kiểm

104

tratínhxácsuấtđượcsửdụnghầuhếttrongthựcthế,cũngđượcbiếtđếnnhưlàkiểm trasốgiảnguyêntốmạnh. Nólàphiên bảnđơn giảnhóacủathuậttoánđượcđềnghị trong đề xuất của chuẩn chữ ký số DSS.

Kiểm tra Miller Rabin dựa trên định lý sau:

Cho � là một số nguyên tố lẻ, cho �−1= 2�� trong đó � là số lẻ.

Cho � là số nguyên bất kỳ sao cho ���(�,�) =1. Lúc này �� ≡ 1(����) hoặc �2�� ≡ 1 ���� với j nào đó, 0 ≤�≤ �−1.

Thuật toán kiểm tra Miller-Rabin như sau [40, tr.138-140]:

Miller-Rabin(n,t)

Đầu vào : số nguyên lẻ � ≥ 3 và tham số an toàn � ≥ 1.

Đầura: n là “sốnguyêntố” hay “hợpsố” (1) Tính � lẻ và � với �−1=2��. (2) Vớimỗi�=1→� (2.1) Chọn một số ngẫu nhiên �, 2 ≤�≤�−2. (2.2) �←�� ����. (2.3) Nếu �≠1 và �≠�−1 thì �←1.

của �, xác suất để một hợp số � qua tất cả � phép thử không lớn hơn 1

� cho một hợp số � vượt qua � phép thử không nhiều hơn 1 � . Số nguyên vượt qua cho một hợp số � vượt qua � phép thử không nhiều hơn 1 � . Số nguyên vượt qua

Trong khi �≤�−1 và �≠�−1 �←�2����. Nếu �=1 thì trả về “hợp số”. �←�+1. N ếu �≠�−1 thì trả về “hợp số”. (3) Trả về “số nguyên tố”.

Thuậttoán6.5.KiếmtratínhnguyêntốtheoxácsuấtMillerRabin

Xácsuấtcủamột hợp số�vượt quaphépthửgiảmnhanhhơn quacácphépthửsau. Baphầntưcácgiá trịcóthểcủa� chobiết� làhợpsố.Điềuđó cónghĩalàxácsuất

4 phép thử Miller-Rabin được gọi là số giả nguyên tố mạnh.

6.4.3 Nhậnxét

Cả hai thuật toán Miller-Rabin và Solovay-Strassen đều chính xác khi biến cố đầu vào là số nguyên tố hoặc hợp số. Tuy nhiên, không có lý do gì để sử dụng kiểm tra Solovay-Strassen(vàkiểmtraFermat)vìkiểmtraMiller-Rabintốthơnrấtnhiều:

105

• Kiểm tra Solovay-Strassen tốn rất nhiều chi phí trong tính toán.

• Kiểm tra Solovay-Strassen khó thực thi do liên quan đến tính ký hiệu Jacobi. 2trong khi 4.

Nếu một số nguyên lẻ �-bit có thể chia hết bởi số nguyên tố nhỏ, nó sẽ tốn ít chi phí hơn để phát hiện ra bằng cách sử dụng thuật toán chia thử hơn là sử dụng kiểm tra Miller-Rabin. Do xác suất một số nguyên ngẫu nhiên � có số chia nguyên tố nhỏ là rất cao, trước khi áp dụng kiểm tra Miller-Rabin, � nên được kiểm tra với các số chia nhỏ bé hơn biên � định trước. Việc này có thể thực hiện bằng cách chia � cho tất cả cácsốnguyêntốnhỏhơn�,hoặcbằngcáchtínhướcsốchunglớnnhấtcủa�vàtích của một vài số nguyên tố ≤�. Tỷ lệ của các số nguyên lẻ � không bị loại trừ bởi việc

chia thử này là 3≤�≤� , xấp xỉ 1.12 (theo định lý Mertens). Ví dụ, nếu

� =256 thì chỉ có 20% số nguyên tố lẻ vượt qua bước chia thử, nghĩa là 80% bị loại bỏtrướckhikiểmtrachiphícaoMiller-Rabinđượcthựchiện.

• Xácsuất sai củakiểm traSolovay-Strassen được chặntrên bởi 1 �

xác suất sai của thuật toán Miller-Rabin được chặn trên bởi 1

1−1

Vấn đề là chọn biên � bao nhiêu là tối ưu. Trong thực nghiệm, nguời ta chọn � =�/� với �là thời gian thực hiện của một phép lũy thừa modulo �-bit đầy đủ và � là thờigian cần thiếu để loại trừ một số nguyên tố nhỏ là số chia của số nguyên �-bit. Các số nguyên lẻ bé hơn � có thể được tính toán trước và chưa sẵn trong một bảng. Nếu có ít bộ nhớ, giá trị �nhỏ hơn giá trị tối ưu có thể được sử dụng.

Gọi�

�,� làxácsuấtmộthợpsố�-bitvượtqua� phépthử.KiểmtraMiller-Rabincho

ta �

�,� ≤ 1 � với � phép thử. Tuynhiên, các chứng minh theo xác suất cho thấy số

phépthử� cầnthiếtíthơnrấtnhiềunhưngvẫnđạtđượccùngxácsuấtsai,cụthểnhư sau [40, tr.146-148]: (1)� �,1 <�242− � với �≥2. � 9 1 � � 7 9 4 � 4 106

Ví dụ, nếu �= 512 và � =6, theo (2), xác suất để một hợp số �-bit vượt qua � phép

thử là�

�,� ≤ 1 88 thay vì�

�,� ≤ 1 6

4 2

4 2

tính toán rất nhiều nhưng vẫn đạt được độ chính xác rất cao.

2. Dựa vào kết quả trên, ta có công thức sau để xác định giá trị � sao cho hợp số nguyên

2 � = 50 27 8 4 2 ���� < 100 ���100 ≤� <256 ���256 ≤� <512 ���512 ≤� <1024 ���� ≥1024

Các thử nghiệm nhằm đánh giá tính hiệu quả của các thuật toán này sẽ được lần lượt 4 (2)� �,� < �3/22��−1/242− �� với ((3)� =�2,� ≥88) hoặc (3≤ �≤ ,� ≥21). �,� < 7 (4)� �,� < 1

= 1 12. Như vậy, ta không cần thiết phải sử 2

dụng � =44 để có được xác suất sai là 1 44 = 1 88. Điều này làm giảm chi phí

Trong thựchành,�-bit vượt qua người ta�thường phép thử Miller-Rabin với xác suất bé hơnhài lòng vớixác suất sai béhơn hay bằng1 1 80 80 là:

trình bày ở Chương 7 .

6.5 Bàitoán phátsinh sốnguyên tố6.5.1 Giớithiệu

Một phần của tài liệu Luận văn thạc sĩ nghiên cứu kiến trúc và xây dựng hệ thống chứng thực tập trung (Trang 125 - 130)

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

(183 trang)
w