Mật mã khóa công khai còn gọi là mật mã khóa bất đối xứng. Đây là mẫu mã hóa/giải mã thiết yếu trong phần mềm trực tuyến. Nó dùng hai khóa khác nhau: khóa công khai và khóa riêng.
Trong thuật toán khóa đối xứng, chỉ một khóa dùng cho cả mã hóa và giải mã. Nhưng trong mật mã khóa công khai, dùng hai khóa: nếu một khóa mã hóa thì khóa kia giải mã và ngược lại.
Khóa sinh ra trong mật mã khóa công khai rất lớn (512, 1024, 2048 bit...). Chúng khó nhớ, do đó lưu trữ trong thiết bị như USB token hoặc module bảo mật phần cứng (HSM).
Hệ mật bất đối xứng phải đạt các dịch vụ an ninh: bảo mật, xác thực, toàn vẹn và không chối cồi. Khóa công khai hỗ trợ không chối cồi và xác thực. Dịch vụ bảo mật và toàn vẹn được xem là một phần của quá trình mã hóa bằng khóa riêng của người dùng.
Hệ khóa công khai đòi hỏi thuật toán mật mã với hai khóa: một giữ riêng, một công khai. Tùy ứng dụng, người gửi dùng khóa riêng của mình hoặc khóa công khai của người nhận (hoặc cả hai) để chạy thuật toán mật mã.
Việc sử dụng hệ mật khóa công khai chia thành ba loại chính:
Mã hóa/Giải mã: Người gửi mã hóa tin nhắn bằng khóa công khai của người nhận.
Chữ ký số (Digital Signature): Người gửi ký tin nhắn bằng khóa riêng của mình. Ký thực hiện bằng thuật toán mật mã áp dụng lên tin nhắn hoặc khối thông tin nhỏ hơn là hàm của tin nhắn.
Trao đổi khóa (Key Exchange): Hai bên đồng ý trao đổi khóa phiên. Có nhiều cách tiếp cận, có thể dùng khóa riêng của một hoặc cả hai bên.
Các bước thiết yếu cho hệ mật khóa công khai:
- Mỗi người dùng sinh một cặp khóa để mã hóa/giải mã tin nhắn.
- Mỗi người đăng ký một trong hai khóa vào thanh ghi công khai hoặc file có sẵn. Khóa kia giữ bí mật. Mỗi người duy trì tập khóa công khai thu được từ người khác.
Ứng dụng chính của hệ khóa công khai là Chữ ký số và Mã hóa dữ liệu. Chữ ký số là nguyên ngữ khóa công khai để xác thực tin nhắn. Trong thực tế, người ta dùng chữ ký tay trên tài liệu giấy/in.
Ứng dụng mã hóa cung cấp dịch vụ bảo mật và toàn vẹn cho thông tin. Khóa công khai cung cấp dịch vụ xác thực và không chối cồi.