Để giải quyết vấn đề phân phối và thoả thuận khóa của mật mã khóa đối xứng, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khóa công khai [10] và một phương pháp trao đổi công khai để tạo ra một khoá bí mật chung mà tính an toàn được bảo đảm bởi độ khó của một bài toán toán học cụ thể (là bài toán tính “logarit rời rạc”). Hệ mật mã khóa công khai hay còn được gọi là hệ mật mã phi đối xứng sử dụng một cặp khóa, khóa mã hóa còn gọi là khóa công khai và khóa giải mã được gọi là khóa bí mật hay khóa riêng. Trong hệ mật này, khóa mã hóa khác với khóa giải mã. Về mặt toán học thì từ khóa công khai rất khó tính được khóa riêng. Biết được khóa này không dễ dàng tìm được khóa kia. Khóa giải mã được giữ bí mật trong khi khóa mã hóa được công bố công khai. Một người bất kỳ có thể sử dụng khóa công khai để mã hoá tin tức, nhưng chỉ có người nào có đúng khóa giải mã mới có khả năng xem được bản rõ. Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B sẽ giải mã thông điệp với khoá riêng tương ứng của mình.
Hình 2.7: Mô hình hệ mật mã khóa công khai
Có nhiều hệ thống khóa công khai được triển khai rộng rãi như hệ RSA, hệ ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman và nổi lên trong những năm gần đây là hệ đường cong Elliptic. Trong số các hệ mật mã trên thì hệ RSA là hệ được cộng đồng chuẩn quốc tế và công nghiệp chấp nhận rộng rãi trong việc thực thi mật mã khóa công khai.
Hệ mật mã RSA, do Rivest, Shamir và Adleman tìm ra, đã được công bố lần đầu tiên vào tháng 8 năm 1977 trên tạp chí Scientific American. Hệ mật mã RSA được sử dụng rộng rãi trong thực tiễn đặc biệt cho mục đích bảo mật và xác thực dữ liệu số. Tính bảo mật và an toàn của chúng được bảo đảm bằng độ phức tạp của một bài toán số học nổi tiếng là bài toán phân tích số nguyên thành các thừa số nguyên tố.
Việc phát minh ra phương pháp mã công khai tạo ra một cuộc “cách mạng” trong công nghệ an toàn thông tin điện tử. Nhưng thực tiễn triển khai cho thấy tốc độ mã hóa khối dữ liệu lớn bằng các thuật toán mã
hóa công khai chậm hơn rất nhiều so với hệ mã hóa đối xứng. Ví dụ, để đạt được độ an toàn như các hệ mã đối xứng mạnh cùng thời, RSA đòi hỏi thời gian cho việc mã hóa một văn bản lâu hơn gấp hàng ngàn lần. Do đó, thay bằng việc mã hóa văn bản có kích thước lớn bằng lược đồ khóa công khai thì văn bản này sẽ được mã hóa bằng một hệ mã đối xứng có tốc độ cao như DES, IDEA,… sau đó khóa được sử dụng trong hệ mã đối xứng sẽ được mã hóa sử dụng mật mã khóa công khai. Phương pháp này rất khả thi trong việc mã và giải mã những văn bản có kích thước lớn.Vấn đề còn tồn đọng của hệ mật mã khóa đối xứng được giải quyết nhờ hệ mật mã khóa công khai. Chính ưu điểm này đã thu hút nhiều trí tuệ vào việc đề xuất, đánh giá các hệ mật mã công khai. Nhưng do bản thân các hệ mật mã khóa công khai đều dựa vào các giả thiết liên quan đến các bài toán khó nên đa số các hệ mật mã này đều có tốc độ mã dịch không nhanh lắm. Chính nhược điểm này làm cho các hệ mật mã khóa công khai khó được dùng một cách độc lập.
Một vấn đề nữa nảy sinh khi sử dụng các hệ mật mã khóa công khai là việc xác thực mà trong mô hình hệ mật mã đối xứng không đặt ra. Do các khóa mã công khai được công bố một cách công khai trên mạng cho nên việc đảm bảo rằng “khóa được công bố có đúng là của đối tượng cần liên lạc hay không?” là một kẽ hở có thể bị lợi dụng. Vấn đề xác thực này được giải quyết cũng chính bằng các hệ mật mã khóa công khai. Nhiều thủ tục xác thực đã được nghiên cứu và sử dụng như Kerberos, X.509… Một ưu điểm nữa của các hệ mật mã khóa công khai là các ứng dụng của nó trong lĩnh vực chữ ký số, cùng với các kết quả về hàm băm, thủ tục ký để bảo đảm tính toàn vẹn của một văn bản được giải quyết.