Năm 1976, Diffie và Hellman đề xuất ý tƣởng một dạng mới của hệ thống mật mã, trong đó ngƣời gửi và ngƣời nhận sử dụng các khoá mã khác nhau nhƣng có mối liên hệ với nhau, và một trong hai khoá đó đƣợc giữ bí mật. Bên nhận dữ liệu giữ một khoá bí mật (khóa riêng) cho phép giải mã với khoá đó, còn bên gửi sử dụng một khoá khác tƣơng ứng với khoá riêng trên để mã hoá dữ liệu, khoá đó gọi là khoá công khai. Hệ thống dùng khoá nhƣ vậy gọi là hệ thốngkhông đối xứng hay hệ mã hóa khóa công khai.
Khi thực thể A muốn gửi thông điệp cho thực thể B: thông điệp đƣợc số hoá và nhóm thành từng khối với độ dài nào đó. Mỗi khối P đƣợc mã hoá bằng khoá công khai K của thực thể thứ B, dùng hàm mã hoá eK của B đƣợc bản mã C = eK(P) và gửi cho B.
Để giải mã thông điệp này, thực thể B chỉ cần dùng khoá riêng K’ với hàm giải mã dK’ : dK’(C) = dK’(eK(P)) = P. Bộ (K, K’) là cặp khoá của thực thể B, K: là khoá lập mã (khoá công khai), K’: là khoá giải mã (khoá riêng).
B
A
Khóa riêng củaB
Thuật toán mã hóa
Thông điệp
(Bản rõ)
Khóa công khai củaB
Thuật toán giải mã Bản mã Thông điệp (Bản rõ)
Nhƣ vậy, các thuật toán khoá công khai sử dụng một khoá để mã hoá và một khoá khác để giải mã, có các tính chất:
1) Không cần phải thiết lập một kênh bảo vệ với những thể thức phức tạp, rƣờm rà để truyền khoá nhƣ trong hệ mã hóa đối xứng.
2) Cặp khoá riêng và khóa công khai đƣợc tạo ra theo một phƣơng pháp đặc biệt có quan hệ với nhau, từ khóa riêng có thể dễ dàng tìm đƣợc khóa công khai, nhƣng biết khóa công khai thì việc tìm ra khóa riêng là rất khó và đây cũng chính là vấn đề then chốt của sự an toàn.
3) Khoá mã hoá đƣợc công khai nên bất kỳ ai cũng sử dụng đuợc. Vì vậy, nguy cơ giả mạo là cao, do đó có hai vấn đề nảy sinh:
(1) Làm thế nào để chứng thực thông điệp đúng là của chủ thể cần gửi? Vấn đề này sẽ đƣợc giải quyết bằng việc sử dụng chữ ký số.
(2) Làm thế nào để bên gửi chắc chắn đã dùng đúng khóa công khai của bên nhận. Chứng chỉ số khoá công khai sẽ giải quyết vấn đề này.
4) Giải thuật mã hóa đối xứng có ƣu điểm là nhanh hơn mã hóa bất đối xứng rất nhiều (hàng nghìn lần), ngƣời ta dùng nó để mã hóa các dữ liệu cần trao đổi với nhau qua các môi trƣờng không an toàn nhƣ Internet, nhƣợc điểm của mã hóa đối xứng chính là nó không cho biết đƣợc tính xác thực cũng nhƣ sự toàn vẹn của dữ liệu và nó cũng bất tiện ở chỗ là khoá bí mật để mã và giải mã dữ liệu cần phải đƣợc trao đổi riêng qua các phƣơng tiện khác chứ không thể gửi đi cùng dữ liệu đƣợc, mã hóa bất đối xứng ra đời để giúp cho việc trao đổi các khoá bí mật đƣợc dễ dàng hơn.
5) Mọi ngƣời trong hệ thống nếu nhận đƣợc bản mật C thì cũng không thể biết đƣợc bản rõ P. Nếu biết khoá mã hoá Ke và thuật toán thì khó thể tìm ra khoá giải mã Kd trong thời gian chấp nhận đƣợc.