Mật mã bất đối xứng hay còn gọi là mã hoá sử dụng public key. Nó sử dụng một cặp key đó là public key và private key thể hiển hình dưới đây (Hình 2.6). Trong mỗi quá trình truyền thông tin sử dụng mật mã bất đối xứng chúng cần một cặp key duy nhất. Nó tạo ra khả năng có thể sử dụng linh hoạt và phát triển trong tương lai hơn là giải pháp mật mã đối xứng. Private key cần phải lưu giữ riêng và đảm bảo tính bảo mật và nó không truyền trên mạng. Public key được cung cấp miễn phí và được công bố cho mọi người.
Hình 2.6 Hệ thông sử dụng mật mã bất đối xứng
Thuật toán mã hoá khoá công khai bắt đầu xuất hiện này năm 1976, do Diffie and Hellman phát minh. Việc tính toán khóa bí mật từ khóa công khai là rất phức tạp. Việc trao đổi khóa công khai không đòi hỏi phương pháp bảo mật. Điều đó giúp cho việc quản lý khoá trở nên dễ dàng hơn. Nếu người gửi sử dụng private key để mã hoá thì người nhận sẽ phải sử dụng public key của người gửi để giải mã. Nếu người gửi sử dụng public
key của người nhận để mã hoá thì người nhận sẽ sử dụng private của họ để giải mã thong tin.
Tương tự như mã hoá khoá bí mật, phương pháp này cũng có các thành phần chính như sau:
• Plaintext: bản tin gốc.
• Encryption Algorithm: phép biến đổi xuôi, thực hiện biến đổi bản tin gốc. • Public/Private keys: cặp khóa công khai/bí mật.
• Ciphertext: bản tin đã biến đổi.
• Decryption Algorithm: phép biến đổi ngược, khôi phục bản tin gốc. Quá trình sử dụng Public Key Encryption:
• Bên nhận sinh cặp khóa.
• Khóa công khai được thường được chứng thực bởi một bên thứ ba tin cậy và chuyển cho người gửi theo các phương thức truyển thông thông thường.
• Bên gửi nhận được khóa công khai, kiểm tra các thông tin chứng thực khoá và dùng khóa này để mã hóa thông điệp và gửi cho bên nhận.
• Bên nhận sử dụng khoá bí mật để giải mã thông điệp. D(Kd(E(Ke,M)) = M • Thông điệp có thể bị bên thứ ba lấy trộm, nhưng không thể đọc được nội dung. Từ đó cũng có thể đưa ra các ưu, nhược điểm của phương pháp này như sau:
- Ưu điểm: Rất thuận tiện cho người dùng khi tạo khoá private/public key. Việc gửi dữ liệu thực hiện dễ dàng nhờ sử dụng public key. Bên nhận cũng dễ dàng giải mã với private key. Ngoài ra, không cho phép thực hiện giải mã nếu chỉ có public key hoặc tính toán private key từ public key là điều hoàn toàn không thể. Hai khoá có thể thay đổi cho nhau trong quá trình mã hoá và giải mã.
- Nhược điểm: Phương pháp này chậm hơn mã hoá đối xứng vì đòi hỏi khối lượng tính toán rất lớn do kích thước khoá thường rất lớn.
Có các giải thuật mã hoá khoá công khai phổ biến: RSA, Stream chaining, diffie – Needham hellman, … Sau đây trình bày cụ thể đối với các thuật toán mã hoá phổ biến.