Thuật toán trao đổi khoá Diffie-Hellman

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cơ sở hạ tầng khóa công khai PKI ứng dụng chứng thực cho các giao dịch hành chính công điện tử​ (Trang 35 - 36)

4. Những nội dung nghiên cứu chính

1.5.1 Thuật toán trao đổi khoá Diffie-Hellman

Diffie-Hellman là một thuật toán dùng để trao đổi khóa đối xứng (Key Exchange), không dùng để mật mã hóa thông tin. Tuy nhiên, Deffie-Hellman lại có ích trong giai đoạn trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Như trên đã trình bày, một trong những vấn đề quan trọng liên quan trực tiếp đến tính an toàn của các thuật toán mật mã đối xứng là vấn đề thống nhất khoá bí mật giữa các thực thể thông tin.

Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (Discrete log). Cho trước một số g và x = gk , tìm k, sao cho k = logg(x). Tuy nhiên, nếu cho trước g, p và (gk mod p), thì quá trình xác định k theo phương pháp logarit rời rạc. Việc tính logarit rời rạc nói chung rất phức tạp nhưng vẫn có thể thực hiện được.

Thuật toán Diffie-Hellman khá đơn giản như sau:

Gọi p là một số nguyên tố và g là một cơ số sinh (Generator) thoả điều kiện với mọi x ∈ {1, 2, …, p-1}, tồn tại số n sao cho: x = gn mod p.

− Giá trị p và g được phổ biến công khai giữa thực thể trao đổi khoá

− User A tạo ra một số bí mật Xa < p, tính Ya = (gXa mod p) và gửi cho B

− User B tạo ra số bí mật Xb < p, tính Yb = (gb mod p) và gửi lại cho A

− Dựa trên thông tin từ A, User B xác định được khoá bí mật dùng cho phiên làm việc bằng cách tính giá trị (gXa mod p)Xb = (gXaXb mod p)

− Tương tự, User A cũng xác định được khoá bí mật này bằng cách tính giá trị (gXb mod p)Xa = (gXaXb mod p)

− Giả sử trong quá trình trao đổi các giá trị (gXa mod p) và (gXb mod p), một người thứ 3 nào nó bắt được thông tin này thì cũng rất khó xác định được a và b vì độ phức tạp của phép toán logarit rời rạc là rất cao.

Hình 1.8: Thut toán trao đổi khoá Diffie-Hellman

Ví dụ: Cho p = 353 và g = 3, Giả sử, User A chọn giá trị bí mật Xa = 97 và User B chọn giá trị bí mật Xb = 233. Khi đó:

User A tính được Ya = (397 mod 353) = 40 và gửi cho B. User B tính được Yb = (3233 mod 353) = 248 và gửi cho A.

User A tính được khoá bí mật K = (Yb)Xa mod 353=24897mod 353= 160 User B tính được khoá bí mật K =(Ya)Xb mod 353= 4097 mod 353 = 160

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cơ sở hạ tầng khóa công khai PKI ứng dụng chứng thực cho các giao dịch hành chính công điện tử​ (Trang 35 - 36)