Trao đổi khóa Diffie–Hellman là một phương pháp trao đổi khóa được phát minh sớm nhất trong mật mã học. Phương pháp trao đổi khóa Diffie–Hellman cho phép hai bên (người, thực thể giao tiếp) thiết lập một khóa bí mật chung để mã hóa dữ liệu sử dụng trên kênh truyền thông không an toàn mà không cần có sự thỏa thuận trước về khóa bí mật giữa hai bên. Khóa bí mật tạo ra sẽ được sử dụng để mã
2.2.2.1. Sơ đồ [3]
Người dùng chọn số nguyên tố p rất lớn sao cho bài toán logarit rời rạc trong
*
p
Z là “khó” giải; chọn là phần tử nguyên thủy thuộc *
p
Z . Phần tử p, là công khai (vật liệu công khai của sơ đồ thỏa thuận khóa Diffie – Hellman là p,).
Trong giao thức này, khóa mật được tạo ra từ sự kết hợp của hai thành viên (giả sử là U, V), như sau:
Người dùng U: - Chọn aungẫu nhiên, bí mật 0au p 2 - Tính au mod
u
b p
- Gửi bucho V
Người dùng V: - Chọn avngẫu nhiên, bí mật 0av p 2 - Tính av mod
v
b p
- Gửi bvcho U
U tính khóa bí mật chung , ( av) modau u v
K p
V tính khóa bí mật chung , ( au) modav v u
K p
Hai giá trị khóa đó là bằng nhau. au
v a
Hình 2.1: Thỏa thuận khoá Diffie – Hellman
Các số mũ au , av (của U, V) đều được chọn lại trước mỗi lần thực hiện giao thức này. Vì thế người dung U và V đều được đảm bảo “khóa tươi”, vì khóa phiên phụ thuộc vào cả hai số ngẫu nhiên bí mật au và av.
Tuy nhiên vì b bu, v trên đường truyền không được bảo vệ bởi tổ chức tin cậy TT, nên giao thức có thể bị tấn công bởi một đối phuơng chủ động W, những người sử dụng cách tấn công “kẻ xâm nhập giữa cuộc”. W sẽ chặn lại các thông điệp giữa U và V và thay thế bằng thông điệp của riêng mình.
au a'u 'v
a
av
Hình 2.2: Kẻ xâm nhập giữa cuộc trong giao thức Diffie – Hellman
Khi đó, người dung U thiết lập thực sự khóa mật a au 'v với W, còn V thiết lập thực sự khóa mật a'uav với W.
Khi U mã hóa bản tin để gửi cho V, W có khả năng giải mã nó còn V thì không thề giải mã được bản tin mà U gửi cho vì V không có khóa chung với U.
2.2.2.2. Ví dụ
Chọn công khai số nguyên tố p23, phần tử nguyên thủy của * 23 Z là 5 (1) Người dung U: Chọn ngẫu nhiên số mũ bí mật au 13 Tính 13 5 mod 23 21 u b
Gửi 21 cho người dung V (2) Người dung V: Chọn ngẫu nhiên số mũ bí mật av6 Tính 6 5 mod 23 8 v b
Gửi 8 cho người dùng U - Hai người U, V tính khóa chung:
U tính được khóa 13 ( , )u v 8 mod 23 18 K V tính được khóa là 6 , 21 mod 23 18 v u K
Như vậy U và V đều tính được khóa chung K 18
2.2.2.3. Độ an toàn
1/. Người dùng U, V đều được đảm bảo “khóa tươi”, vì khóa phiên phụ thuộc vào cả hai số ngẫu nhiên bí mật a au, v
2/. Tuy nhiên, vì trên đường truyền không được bảo vệ bởi tổ chức tin cậy TT, nên kẻ xâm nhập giữa cuộc lợi dụng lỗ hổng này để phá hoại U, W bằng cách chặn giữa đường bắt lấy au, đổi thành '
u
a rồi gửi cho V, đồng thời bắt lấy av, đổi thành '
v a rồi gửi cho U.
Khi đó, người dùng U thiết lập thực sự khóa mật a au 'v với W, còn V thiết lập thực sự khóa mật a'uav với W. Khi U mã hóa bản tin để gửi cho V, W có khả năng giải mã nó còn V thì không thề giải mã được bản tin mà U gửi cho vì V không có khóa chung với U.
2.2.2.4. Ý tưởng cải tiến: Bổ sung xác thực danh tính U và V
Đảm bảo rằng đang thỏa thuận khóa với nhau mà không có W. Vì vậy trước khi thỏa thuận khóa, U và V phải thực hiện các giao thức tách bạch để thông báo danh tính của nhau, nhờ đó họ sẽ nhận ra kẻ không phải là U hay V.