2 Mật mã khóa công khai
2.4.1 Hệ trao đổi chìa khóa của Diffle-Hellman
Do hệ mật mã khóa công khai chậm hơn so với các hệ thống mã hóa đối xứng (cổ điển) nên người ta thường kết hợp với hệ mật mã đối xứng theo cách sau: hệ khóa công khai dùng trao đổi khóa bí mật, sau khi có khóa bí mật người ta sẽ mã hóa bằng hệ mật mã đối xứng và truyền. Đặc biệt, quá trình thống nhất về một khóa chung cho một hệ mật mã đối xứng có thể được thực hiện rất hiệu quả nếu sử dụng hệ thống khóa công khai. Đề xuất chi tiết đầu tiên hiện thực hóa điều này là của W. Diffie và M.E Hellman.
Giả sử A và B muốn có chung một con số để làm chìa khóa chung (cho một hệ mã đối xứng nào đó). Giả sử kA và kB là khóa bí mật của A và
B, còn gkA và gkB là khóa công khai của A và B. Vậy thì họ có thể chọn ngay con số
P = gkA.kB
làm khóa chung. Rõ ràng, A và B có thể tính P một cách dễ dàng (bằng cách lấy số mà người kia đã công bố công khai nâng lên lũy thừa với bậc bằng chìa khóa bí mật của mình).
Điều thú vị không ai khác có khả năng tính ra được con sốP nếu không biết kA hoặc kB vì việc tính logarit rời rạc là không khả thi.
Nếu nhu cầu trao đổi thông tin là lớn thì A và B không nên dùng con số P nói trên để làm chìa khóa cho mọi cuộc trao đổi thông tin mật (vì có thể bị lộ trước các công cụ thám mã ngày càng mạnh). Khi đó A và B có thể sử dụng chung những con số khác nhau cho những lần trao đổi thông tin khác nhau. Muốn vậy, A chọn ngẫu nhiên một số a và gửi cho B giá trị X = ga, còn B chọn ngẫu nhiên số b rồi gửi cho A giá trị Y = gb. Khi đó, hai người sẽ dễ dàng tính được con số chung sau đây:
K = Ya = gba = (ga)b = Xb
Trong khi người "ngoài cuộc" thì không thể biết được gì ngoài các sốX, Y
mà từ đó không thể nào tính ra được K (trong một thời gian chấp nhận được).
Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức