Phƣơng pháp xác định

Một phần của tài liệu Nghiên cứu và phát triển hệ mật mã khóa công khai ứng dụng trong bảo mật dữ liệu và xác thực các giao dịch điện tử (Trang 42)

Các phƣơng pháp kiểm tra xác suất đƣợc trình bày ở trên là các phƣơng pháp thiên về hợp số. Kiểm tra Miller–Rabin rất hiệu quả, nhƣng không máy mắn là nó có thể kết luận một hợp số là một số nguyên tố với xác suất nào đó. Vì vậy kiểm tra xác suất không thể chứng minh một số là số nguyên tố. Nó đơn giản chỉ đƣa ra một khẳng định, với một hỗ trợ mạnh mẽ của bằng chứng là giá trị xác suất. Trong phần này sẽ trình bày thuật toán AKS kiểm tra số nguyên tố một cách chính xác.

Tháng 8 năm 2002, ba tác giả Manindra Agrawal, Neeraj Kayal và Nitin Saxena (Viện công nghệ Kanpur Ấn Độ) công bố thuật thoán kiểm tra tính nguyên tố với độ phức tạp đa thức (thƣờng gọi là thuật toán AKS). Nó thoả mãn ba tính chất sau:

(i) Xác định (Deterministic) – luôn luôn cho câu trả lời chính xác

(ii) Không điều kiện (Unconditional) – không bác bỏ bất cứ giả thiết không đƣợc chứng minh nào (tiên đề) chẳng hạn nhƣ giả thiết Riemann.

(iii) Thời gian đa thức (Polynomial time) - Độ phức tạp thời gian của thuật toán là đa thức.

Các thuật toán trƣớc đó thƣờng chỉ đạt đƣợc một hoặc hai tính chất trên, AKS là thuật toán đâu tiên đạt đƣợc cả ba tính chất trên. Hơn nƣa đến năm 2008 nó vẫn là thuật toán duy nhất đạt đƣợc điều này.

Mặc dù độ phức tạp của thuật toán AKS là đa thức, tuy nhiên với bậc đa thức khá cao (khoảng O(log12 n)), nên thuật toán vẫn chƣa chứng tỏ đƣợc tính hiệu quả rõ rệt trong tính toán thực tiễn (cho đến nay). Về mặt lý thuyết, thuật toán có ý nghĩa lớn vì vấn đề này đã thu hút đƣợc sự quan tâm nghiên cứu của nhiều ngƣời trong một thời gian dài. Thuật toán AKS sử dụng những kiến thức khá sơ cấp với ý tƣởng rất mạch lạc, rõ ràng. Thuật toán xuất phát từ ý tƣởng nhƣ sau:

Số nguyên p là nguyên tố khi và chỉ khi đẳng thức sau đúng với một số nguyên a

nào đó mà nguyên tố cùng nhau với p: (x-a)p = xp - a (mod p) (*)

Nhƣng việc kiểm tra đẳng thức trên không phải đơn giản (khi p đủ lớn), cho nên ngƣời ta cho rút gọn hai vế của đẳng thức trên theo modulo đa thức xr – 1 (với r là một số nguyên tố có tính chất “đặc biệt”, sự đặc biệt này sẽ đƣợc mô tả trong thuật toán), và sau đó lại rút gọn các hệ số của kết quả thu đƣợc (hai đa thức) theo modulo p. Tức là có hệ thức sau:

(x-a)p = xp – a (mod xr -1, p) (**)

Biểu thức (**) có thể xảy ra trong một số trƣờng hợp p là hợp số, nhƣng ngƣời ta đã chứng minh đƣợc rằng không hợp số p nào thoả mãn (**) với mọi a nằm trong vùng:

1< a < 2 rlog p. Nhƣ vậy việc kiểm tra (**) cho các số a nằm trong vùng này sẽ tƣơng đƣơng với việc kiểm tra tính nguyên tố của p và thuật toán có độ phức tạp là đa thức.

Thuật toán Agrawal – Kayal – Saxena:

Input: integer n>1

1. if(n is of the form ab, b>1) output COMPOSITE;

2. r = 2;

3. while(r < n){

3.1. if ( gcd(n, r)  1) output COMPOSITE;

3.2. if (r is prime)

3.3. if (q 4 rlogn) and ( 1(mod )) 1 r n q r   break; 3.4. r  r + 1 4. } 5. for a = 1 to 2 rlogn

if((x - a)n  (xn - a)(mod xr - 1, n) output COMPOSITE;

6. output PRIME.

Thuật toán này đã đƣợc một số nhà toán học kiểm nghiệm, đánh giá cao và xem làm một thuật toán đẹp.

Trong thực tiễn xây dựng các giải pháp mã hóa, thƣờng có nhu cầu có các các số nguyên tố rất lớn. Để tìm đƣợc các số nhƣ vậy, ngƣời ta thƣờng chọn ngẫu nhiên một số rất lớn, rồi dùng trƣớc cho nó một thuật toán xác suất chẳng hạn nhƣ thuật toán Miller- Rabin, sau đó dùng tiếp một thuật toán tất định để đảm bảo 100% rằng số đó là các số nguyên tố.

Nhƣ ở trên đã nói thuật toán AKS trên đây đƣợc chứng tỏ là có độ phức tạp thời gian đa thức cỡ O(log12 n) khi thử trên số n bất kỳ; nhƣng nếu thử với số nguyên dạng Sophie Germain, tức dạng 2p+1, thì độ phức tạp sẽ chỉ cỡ O(log6 n).

Tuy nhiên, trong thực tế tính khả thi của thuật toán này cũng không cao, dựa trên một thử nghiệm cài đặt mà kết quả đƣợc đƣa ra ở các bảng dƣới đây để cho thấy điều đó.

Thử nghiện cài đặt thuật toán AKS sử dụng bộ công cụ Java 2 Standard Development Kit (phiên bản 1.4.2.0) với cấu hình nhƣ sau [30]:

Bộ xử lý: AMD Athlon (2.4 GHZ)

Ram: 256 MB

Hệ điều hành: Windows XP (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả đƣợc liệt kê dƣới đây:

Bảng 2.4.2. Thời gian thực hiện của thuật toán AKS

Một phần của tài liệu Nghiên cứu và phát triển hệ mật mã khóa công khai ứng dụng trong bảo mật dữ liệu và xác thực các giao dịch điện tử (Trang 42)