Do khả năng các chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo vệ trong khi phân phối và trong khi dùng. Hậu quả của yêu cầu về việc lựa chọn, phân phối và lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát là một việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy.
2.5.2 Mã hóa bất đối xứng
Mã hóa bất đối xứng sử dụng một cặp chìa khóa có liên quan với nhau về mặt toán học, một chìa công khai dùng để mã hóa (public key) và một chìa bí mật dùng để giải mã (private key). Một thông điệp sau khi được mã hóa bởi chìa công khai sẽ chỉ có thể được giải mã với chìa bí mật tương ứng. Khóa thứ nhất được phân phối rộng rãi trên các đường truyền không an ninh cho mục đích sử dụng công khai. Khóa thứ hai không bao giờ được truyền trên mạng và nó chỉ được sử dụng bởi phía đối tác cần giải mật mã số liệu. Hai khóa này liên hệ với nhau một cách phức tạp bằng cách sử dụng rất nhiều số nguyên tố và các hàm một chiều. Kỹ thuật này dẫn đến không thể tính toán được khóa riêng dựa trên khóa công khai. Khóa càng dài thì càng khó phá vỡ hệ thống. Các hệ thống khóa 64bit như DES, có thể bị tấn công rễ ràng bằng cách tìm từng tổ hợp khóa đơn cho đến khi tìm được khóa đúng. Các hệ thống khóa 128bit phổ biến hơn
Các thuật toán bất đối xứng: RSA, Elliptic Curve, ElGamal, Diffie Hellman …
Mã hóa đối xứng chỉ sử dụng một khóa cho việc mã hóa và giải mã.
Ngược lại mã hóa bất đối xứng sử dụng một cặp chìa khóa có liên quan với nhau về mặt toán học.
Một chìa công khai dùng để mã hoá (public key) và một chìa bí mật dùng để giải mã (private key).
Một thông điệp sau khi được mã hóa bởi chìa công khai sẽ chỉ có thể được giải mã với chìa bí mật tương ứng.
Do các thuật toán loại này sử dụng một chìa khóa công khai nên còn có tên gọi khác là thuật toán mã hóa dùng chìa khóa công khai (public-key cryptography).
Về khía cạnh an toàn, các thuật toán mật mã hóa khóa bất đối xứng cũng không khác nhiều với các thuật toán mã hóa khóa đối xứng. Có những thuật toán được dùng rộng rãi, có thuật toán chủ yếu trên lý thuyết; có thuật toán vẫn được xem là an toàn, có thuật toán đã bị phá vỡ...
Nhìn chung, chưa có thuật toán nào được chứng minh là an toàn tuyệt đối Vì vậy, cũng giống như tất cả các thuật toán mật mã nói chung, các thuật toán mã hóa khóa công khai cần phải được sử dụng một cách thận trọng.