Một số bài toán cơ bản

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 56)

Sau đây ta sẽ trình bày một số bài toán số học đƣợc sử dụng đến khi xây dựng các hệ mã hóa khóa công khai đƣợc trình bày trong luận văn.

Bài toán phân tích số nguyên (thành thừa số nguyên tố)

Cho số nguyên dƣơng n, tìm tất cả các ƣớc số nguyên tố của nó, hay là tìm dạng phân tích chính tắc của n = p1a1.p2a2...pkak, trong đó p1 là các số nguyên tố từng cặp khác nhau và các i≥ 1.

Bài toán này có liên hệ mật thiết với các bài toán thử tính nguyên tố hay thử tính hợp số của một số nguyên, nhƣng với những gì mà ta biết đến nay, nó dƣờng nhƣ khó hơn nhiều so với hai bài toán thử tính nguyên tố và tính hợp số.

Trong lý thuyết mã hóa, bài toán này thƣờng đƣợc sử dụng với các dữ liệu n là số nguyên Blum, tức các số nguyên dƣơng có dạng tích của hai số nguyên tố lớn nào đó.

Bài toán RSA (Rivest-Shamir-Adleman)

Cho số nguyên dƣơng n là tích của hai số nguyên tố lẻ khác nhau, một số nguyên dƣơng e sao cho gcd (e,(n)) = 1, và một số nguyên c; tìm một số nguyên m sao cho mc

c(mod n).

Điều kiện gcd (e,  (n)) = 1 bảo đảm cho việc với mỗi số nguyên c{0, 1, ..., n-1} có đúng một số m{0, 1, ...n -2} sao cho mc c (mod n).

Dễ thấy rằng nếu biết hai thừa số nguyên tố của n, tức là biết n = p.q thì sẽ biết

(n) = (p-1)(q-1), và từ đó, do gcd (e, (n)) = 1 sẽ tìm đƣợc d = e-1 mod  (n), và do đó sẽ tìm đƣợc m = cd mod n. Nhƣ vậy, bài toán RSA có thể qui dẫn trong thời gian đa thức về bài toán phân tích số nguyên. Tuy rằng cho đến nay chƣa có một chứng minh nào cho việc qui dẫn ngƣợc lại nhƣng nhiều ngƣời vẫn tin rằng hai bài toán đó là tƣơng đƣơng với nhau về độ phức tạp tính toán.

Bài toán thặng dƣ bậc hai

Cho một số nguyên lẻ n là hợp số, và một số nguyên aJn, tập tất cả các số a có ký

hiệu Jacobi       n a

= 1. Hãy quyết định xem a có là thặng dƣ bậc hai theo mod n hay không? Trong lý thuyết mã hóa, bài toán này cũng thƣờng đƣợc xem xét với trƣờng hợp n là số nguyên Blum, tức n là tích của hai số nguyên tố p và q, n = p.q. Chú ý rằng trong trƣờng hợp này, nếu aJn, thì a là thặng dƣ bậc hai theo mod n khi và chỉ khi ap = 1, điều kiện này có thể thử đƣợc dễ dàng vì nó tƣơng đƣơng với điều kiện a(p-1)/2 1(mod p). Nhƣ vậy, trong trƣờng hợp này, bài toán thặng dƣ bậc hai có thể qui dẫn trong thời gian đa thức về bài toán phân tích số nguyên. Mặt khác, nếu không biết cách phân tích n thành thừa số nguyên tố thì cho đến nay, không có cách nào giải đƣợc bài toán thặng dƣ bậc hai trong thời gian đa thức. Điều đó củng cố thêm niềm tin rằng bài toán thặng dƣ bậc hai và bài toán phân tích số nguyên là có độ khó tƣơng đƣơng nhau.

Bài toán tìm căn bậc hai mod n

Cho một số nguyên lẻ n là hợp số Blum, và một số aQn, tức a là một thặng dƣ bậc hai theo mod n. Hãy tìm một căn bậc hai của a theo mod n, tức tìm x sao cho x2a (mod n).

Nếu biết phân tích n thành thừa số nguyên tố, n = p.q, thì bằng cách giải các phƣơng trình x2  a theo các mod p và mod q, rồi sau đó kết hợp các nghiệm của chúng lại theo định lý số dƣ Trung Quốc ta sẽ đƣợc nghiệm theo mod n, tức là căn bậc hai của a theo mod n cần tìm. Vì mỗi phƣơng trình x2  a theo mod p và mod q có hai nghiệm (tƣơng ứng theo mod p và mod q), nên kết hợp lại ta đƣợc bốn nghiệm, tức bốn căn bậc hai của a theo mod n. Ngƣời ta đã tìm đƣợc một số thuật toán tƣơng đối đơn giản (trong thời gian đa thức) giải phƣơng trình x2  a (mod p) với p là số nguyên tố. Nhƣ vậy, bài toán tìm căn bậc hai mod n có thể qui dẫn trong thời gian đa thức về bài toán phân tích số nguyên. Ngƣợc lại, nếu có thuật toán A giải bài toán tìm căn bậc hai mod n thì cũng có thể xây dựng một thuật toán giải bài toán phân tích số nguyên nhƣ sau: Chọn ngẫu nhiên

một số x với gcd(x,n) = 1, và tính a = x2 mod n. Dùng thuật toán A cho a để tìm một căn bậc hai mod n của a. Gọi căn bậc hai tìm đƣợc đó là y. Nếu y x (mod n), thì phép thử coi nhƣ thất bại, và ta phải chọn tiếp một số x khác. Còn nếu y  x (mod n), thì gcd (x- y, n) chắc chắn là một ƣớc số không tầm thƣờng của n, cụ thể là p hay q. Vì n có 4 căn bậc hai mod n nên xác suất của thành công ở mỗi lần thử là

2 1

, và do đó số trung bình (kỳ vọng toán học) các phép thử để thu đƣợc một thừa số p hay q của n là 2, từ đó ta thu đƣợc một thuật toán giải bài toán phân tích số nguyên (Blum) với thời gian trung bình đa thức. Tóm lại, theo một nghĩa không chặt chẽ lắm, ta có thể xem hai bài toán phân tích số nguyên và tìm căn bậc hai mod n là khó tƣơng đƣơng nhau.

Bài toán lôgarit rời rạc

Cho số nguyên tố p, một phần tử nguyên thủy  theo mod p (hay  là phần tử nguyên thủy của Z*p), và một phần tử ßZ*. Tìm số nguyên x (0 x  p-2) sao cho  x

ß (mod) p.

Biết rằng trong trƣờng hợp chung, cho đến nay chƣa có một thuật toán nào giải bài toán này trong thời gian đa thức. Bài toán này cũng đƣợc suy rộng cho các nhóm cyclic hữu hạn nhƣ sau:

Bài toán lôgarit rời rạc suy rộng

Cho một nhóm cyclic hữu hạn G cấp n, một phần tử sinh (nguyên thủy)  của G, và một phần tử ßG. Tìm số nguyên x (0xn-1) sao cho x

= ß.

Các nhóm đƣợc quan tâm nhiều nhất trong lý thuyết mã hóa là: nhóm nhân của trƣờng hữu hạn GF (p)-đẳng cấu với nhóm Z*

p của trƣờng Zp, nhóm nhân F*2m của trƣờng hữu hạn GF (2m), nhóm nhân Z*n = {a:0  a  n-1, gcd (a,n) = 1} của trƣờng Zn với n là hợp số, nhóm gồm các điểm trên một đƣờng cong elliptic xác định trên một trƣờng hữu hạn, v.v...

(adsbygoogle = window.adsbygoogle || []).push({});

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 56)