Thuật toán được đưa ra bởi Diffie và Hellman và được ứng dụng nhiều trên các sản phẩm thương mại
Mục đích của thuật toán là cho phép 2 người dùng trao đổi khóa một cách an toàn mà khóa sau đó có thể dùng cho việc mã hóa bản tin. Thuật toán tự bản thân nó được giới hạn trong việc trao đổi khóa.
Thuật toán trao đổi khóa
Đầu tiên ta lựa chọn số nguyên tố q, sau đó xác định số α là căn nguyên thủy của q. α được gọi là căn nguyên thủy của q khi những số αi mod p là phân biệt và chứa các số nguyên từ 1 đến (q -1)
Với bất kỳ số nguyên b < q và căn nguyên thủy α của số q, ta xác định được duy nhất số mũ i thỏa mãn :
b = αi mod q với 0≤ i ≤ (q-1)
Số mũ i được gọi là logarit rời rạc (discrete logarithm) và được ký hiệu là inda,q(b). Giả sử 2 người dùng A và B muốn trao đổi khóa với nhau. Khi đó, quá trình trao đổi khóa thực hiện theo thuật toán Diffie – Hellman như sau :
1) Người dùng A lựa chọn ngẫu nhiên số nguyên XA < q và thực hiện tính YA = αXamod q
2) Người dùng B cũng lựa chọn ngẫu nhiên số XB < q và cũng thực hiện tính YB = αXbmod q
3) Mỗi bên giữ bí mật giá trị X của mình và đưa ra giá trị Y là giá trị công khai tới bên kia
5) B nhận được YA, thực hiện tính khóa K = (YA)Xb mod q Hai phép tính khóa của 2 bên được xác định như sau :
KA = (YB)Xa mod q = (αXbmod q)Xa mod q = αXaXbmod q = (αXa )Xbmod q = (αXamod q)Xb mod q = (YA)Xb mod q = KB
Khóa tính được ở hai bên là như nhau, 2 bên A và B đã thực hiện trao đổi khóa cho nhau một cách bí mật.
Vì XA và XB được giữ bí mật ở mỗi bên nên kẻ tấn công chỉ có được q, α, YA, YB
nên sẽ gặp khó khăn trong việc xác định số mũ discrete logarithm. Tức là giả sử kẻ tấn công có khóa bí mật của B thì kẻ đó cần phải tính XB = indα, q(YB) sau đó mới có thể tính khóa K theo cách như của B đã tính.
Bảo mật của thuật toán Diffie – Hellman
Mức độ bảo mật của thuật toán trao đổi khóa Diffie- Hellman đó là rất dễ tính được hàm mũ mod một số nguyên tố nhưng lại rất khó để tính được giá trị của số mũ đó. Với số nguyên tố q lớn, việc tính giá trị mũ là hầu như không thể thực hiện được. Ví dụ thuật toán Diffe – Hellman : Hai người dùng A và B thực hiện trao đổi khóa, các số công khai được chọn là số nguyên tố q= 71, căn nguyên thủy α = 7. Bên A chọn số bí mật XA = 5, B chọn XB = 12.
Khi đó YA = 75 mod 71= 51 và YB = 712 mod 71 = 4 Sau khi trao đổi Y, sẽ tính được khóa bí mật chung là :
K = (YB)Xa mod 71 = 45 mod 71 = 30 K = (YA)Xb mod 71 = 5112 mod 71 = 30
Từ {YA = 51, YB = 4} bên tấn công không thể tính được K=30