Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép ngƣời sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trƣớc đó. Điều này đƣợc thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
Trong mật mã hóa khóa công khai, khóa cá nhân phải đƣợc giữ bí mật trong khi khóa công khai đƣợc phổ biến công khai. Trong hai khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
- Mã hóa: giữ bí mật thông tin và chỉ có ngƣời có khóa bí mật mới giải
mã đƣợc.
- Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã đƣợc tạo với
một khóa bí mật nào đó hay không.
- Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin
mật giữa hai bên.
Thông thƣờng, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lƣợng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhƣng những lợi điểm mà chúng mang lại khiến cho chúng đƣợc áp dụng trong nhiều ứng dụng.
Sự ra đời của khái niệm hệ mật mã khoá công khai là một tiến bộ có tính chất bƣớc ngoặt trong lịch sử mật mã nói chung, gắn liền với sự phát triển của khoa học tính toán hiện đại. Ngƣời ta có thể xem thời điểm khởi đầu của bƣớc ngoặt đó là sự xuất hiện ý tƣởng của W. Diffie và M.E. Hellman đƣợc trình bày vào tháng sáu năm 1976 tại Hội nghị quốcgiahàng năm của AFIPS (Hoa
kỳ) trong bài Multiuser cryptographic techniques. Một năm sau, năm 1977,
R.L. Rivest, A. Shamir và L.M. Adleman đề xuất một hệ cụ thể về mật mã khoá công khai mà độ an toàn của hệ dựa vào bài toán khó “phân tích số nguyên thành thừa số nguyên tố”, hệ này về sau trở thành một hệ nổi tiếng và mang tên là hệ RSA, đƣợc sử dụng rộng rãi trong thực tiễn bảo mật và an toàn thông tin.
Cũng vào thời gian đó, M.O. Rabin cũng đề xuất một hệ mật mã khoá công khai dựa vào cùng bài toán số học khó nói trên. Liên tiếp sau đó, nhiều hệ mật mã khóa công khai đƣợc đề xuất, mà khá nổi tiếng và đƣợc quan tâm nhiều là các hệ: hệ McEliece đƣợc đƣa ra năm 1978 dựa trên độ NP(khó) của bài toán giải mã đối với các hệ mã cyclic tuyến tính, hệ Merkle- Hellman dựa trên tính NP- đầy đủ của bài toán xếp ba lô (knapsack problem), hệ mật mã nổi tiếng ElGamal dựa trên độ khó của bài toán lôgarit rời rạc, hệ này về sau đƣợc mở rộng để phát triển nhiều hệ tƣơng tự dựa trên độ khó của các bài toán tƣơng tự lôgarit rời rạc trên các cấu trúc nhóm cyclic hữu hạn, nhóm các điểm nguyên trên đƣờng cong eliptic, v.v...
Để tăng độ bảo mật, hệ mật mã ElGamal còn dùng với tƣ cách đầu vào cho thuật toán lập mật mã của mình, ngoài khoá công khai và bản rõ, một yếu tố ngẫu nhiên đƣợc chọn tuỳ ý, điều đó làm cho hệ mật mã trở thành một hệ mật mã xác suất khoá công khai. Một số hệ mật mã xác suất khoá công khai cũng đƣợc phát triển sau đó bởi Goldwasser-Micali và Blum-Goldwasser.
Không phải tất cả các thuật toán mật mã hóa khóa bất đối xứng đều hoạt động giống nhau nhƣng phần lớn đều gồm 2 khóa có quan hệ toán học với nhau: một cho mã hóa và một để giải mã. Để thuật toán đảm bảo an toàn thì không thể tìm đƣợc khóa giải mã nếu chỉ biết khóa đã dùng mã hóa. Điều này còn đƣợc gọi là mã hóa công khai vì khóa dùng để mã hóa có thể công bố công khai mà không ảnh hƣởng đến bí mật của văn bản mã hóa.
Các thông tin để mở khóa thì chỉ có ngƣời sở hữu mới biết. Tồn tại khả năng một ngƣời nào đó có thể tìm ra đƣợc khóa bí mật. Không giống với hệ thống mật mã sử dụng một lần (one-time pad) hoặc tƣơng đƣơng, chƣa có thuật toán mã hóa khóa bất đối xứng nào đƣợc chứng minh là an toàn trƣớc các tấn công dựa trên bản chất toán học của thuật toán. Khả năng một mối
quan hệ nào đó giữa 2 khóa hay điểm yếu của thuật toán dẫn tới cho phép giải mã không cần tới khóa hay chỉ cần khóa mã hóa vẫn chƣa đƣợc loại trừ. An toàn của các thuật toán này đều dựa trên các ƣớc lƣợng về khối lƣợng tính toán để giải các bài toán gắn với chúng.[1]
Các ƣớc lƣợng này lại luôn thay đổi tùy thuộc khả năng của máy tính và các phát hiện toán học mới. Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng tƣơng đối đảm bảo. Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn bộ) đƣợc ƣớc lƣợng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã hóa các thông tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần thời gian tồn tại của thẻ (vài năm).[1]