Trao đổi khóa Diffie Hellman

Một phần của tài liệu một số vấn đề về căn nguyên thủy và ứng dụng (Trang 44 - 47)

3 MỘT SỐ ỨNG DỤNG CỦA CĂN NGUYÊN THỦY

3.3 Trao đổi khóa Diffie Hellman

Các kết quả trong mục này được tham khảo từ các tài liệu [1], [2], [3], [4], [7]. Mã hóa khóa công khai là một phương pháp mã hóa thông tin mà hai bên đều có một cặp khóa dùng để mã hóa thông tin. Một khóa được công khai và một khóa được giữ kín. Khi muốn gửi một thông tin mật thì bên gửi phải mã hóa thông tin theo khóa công khai của bên nhận. Bên nhận sẽ giải mã bằng khóa riêng của mình. Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã hóa, đó là trao đổi khóa Diffie - Hellman.

Quá trình trao đổi khóa Diffie - Hellman được xây dựng dựa vào lý thuyết về căn nguyên thủy, và diễn ra như sau.

Bước 1: Người A và người B cùng chọn một số chung là p và một căn nguyên

thủy theo môđun p là g. Hai con số này là khóa công khai.

Bước 2: Người A chọn một số a bất kỳ và tính α ≡ga (mod p) rồi gửi cho người B số α này. Số a này là khóa bí mật của riêng người A.

Bước 3: Người B chọn số b và tính một số β ≡gb (mod p) rồi gửi cho người A số

β này. Số b này là khóa bí mật của riêng người B.

Bước 4: Người A tính được βa ≡(gb)a ≡γ (mod p), đồng thời người B cũng tính được αb ≡(ga)b ≡γ (mod p).

Vậy hai người A và B đều thu được khóa bí mật chung là γ.

bảng thông tin sau.

Người A Người B Người khác

Không Không Không

Biết biết Biết biết Biết biết

p, g - p, g - p, g - a α≡ga (mod p) - α a α a b β b β ≡gb (mod p) - β b γ ≡βa (mod p) - γ ≡αb (mod p) - - γ

Ví dụ 3.3.1. Người A và người B cùng chọn một số chung làp= 59 và một căn nguyên thủy theo môđun 59 là g = 13.

Người A bí mật chọn số a = 3 và gửi cho người B số α = 14 (vì 133 ≡ 14 (mod 59)).

Người B bí mật chọn số b = 10 và gửi cho người A số β = 36 (vì 1310 ≡ 36 (mod 59)).

Từ đó, người A tính được γ ≡ 363 ≡ 46 (mod 59), người B cũng tính được

γ ≡ 1410 ≡ 46 (mod 59). Vậy hai người A và B thu được khóa bí mật chung là 46.

Do bên thứ ba chỉ biết được bốn thông tin là p, q, α, β nên để có được khóa bí mật γ thì cần biết a hoặc b, tức là đi tìm chỉ số của α và β theo cơ số g theo môđun p bằng cách giải phương trình đồng dư (bài toán logarit rời rạc)

Sau đây là một số thuật toán để giải bài toán logarit rời rạc.

Thuật toán vét cạn: Vìg là căn nguyên thủy theo môđun pnguyên tố cho nên ta có cấp của g theo môđun p là p − 1. Từ đó suy ra phương trình

gx ≡ α (mod p) có nghiệm trong phạm vi từ 1 đến p−2. Ta sẽ thử chọn bằng cách gánx= 1, . . . , p−2. Ta cần thực hiện ít nhấtp−2phép tính để giải phương trình.

Thuật toán Baby-step Giant-step của Daniel Shanks: Xuất phát từ phương pháp vét cạn, phương pháp này nhằm giảm bớt phép tính ở phương pháp trên, bằng cách không đi quét toàn bộ p giá trị, mà tách x =i+jm với m = [(p−1)12] rồi gán cho ivà j các giá trị từ 0đếnm rồi so sánh gmj với αg−i theo môđun p. Nếu hai giá trị này bằng nhau thì từ giá trị i và j tương ứng, ta tính được nghiệm

x cần tìm. Ta cần thực hiện 2[(p−1)12 + 1] phép tính để giải phương trình, chưa tính thao tác so sánh.

Thuật toán Pohlig - Hellman: Vì p là số nguyên tố nên p−1 có thể phân tích thành tích các thừa số nguyên tố như sau

p−1 = S Y i=1 qαi i .

với qi là các ước nguyên tố phân biệt, ai là các số nguyên dương. Dựa vào định lí Trung hoa về phần dư, nếu tính được xi (modqαi

i ) với 1≤i≤S thì từ đó suy ra được x (mod p−1). Xét phương trình đồng dư

g p−1 qαi i x ≡g p−1 qαi i (mod p). Trước tiên, lập bảng giá trị của g

k(p−1)

qi (mod p) với k = 0,1, . . . , q−1. Tiếp theo, tính x0i+x1iq+. . .+x(α−1)iqα−1 ≡ loggb (mod qαi i ) với 1≤xji ≤qi−1. Khi đó g p−1 qi x0i ≡α p−1 qi (mod p)

từ đó suy ra g p−1 qi x1i ≡(αg−x0i) p−1 q2 i (mod p). Tương tự g p−1 qi xji ≡(αg−x0i−x1iq−...−x(j−1)iqj−1) p−1 qj+1 i (mod p).

Do đó ta tính được các giá trị xi mod qαi

i với 1 ≤ i ≤ S. Ta cần tính ít nhất

S

P

i=1

(αiqi+qi) phép tính, chưa bao gồm các bước nâng bậc, tìm phần tử nghịch đảo, nhân và lập bảng.

Từ đánh giá trên, có thể thấy các thuật toán này đều chỉ khả thi với số p

không quá lớn. Tuy nhiên, trong trường hợp p−1 phân tích thành các thừa số nguyên tố nhỏ thì có thể dùng thuật toán Pohlig - Hellman giải quyết hiệu quả. Vì vậy, người ta thường chọn số p là số nguyên tố có dạng 2q+ 1 với q là số nguyên tố rất lớn. Trong thực tế, số p thường có trên 300 chữ số còn số a và b

có trên 100 chữ số. Với những máy tính hiện đại nhất hiện nay cũng không giải quyết được hiệu quả bài toán trên trong thời gian ngắn.

Một phần của tài liệu một số vấn đề về căn nguyên thủy và ứng dụng (Trang 44 - 47)

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

(66 trang)