I. Tổng Quan Về Mật Mã Bất Đối Xứng (Asymmetric Ciphers)
1. Tình Huống Người Đưa Thư - Khó Khăn Của Mật Mã Đối Xứng
Trong môi trường truyền tin ngày nay, việc bảo mật thông tin là rất quan trọng. Để hiểu rõ hơn về mật mã bất đối xứng, hãy cùng xem xét một tình huống cụ thể: A và B là hai người ở xa cần gửi thư cho nhau thông qua một người đưa thư. Nội dung bức thư ở dạng plaintext (văn bản không mã hóa), và có thể xảy ra trường hợp người đưa thư đọc trộm thông điệp. Để bảo đảm bí mật, A và B quyết định gửi bức thư trong một cái hòm có khóa. Mỗi người đều có chìa khóa riêng để mở hòm, ngăn không cho người đưa thư tiếp cận nội dung lá thư. Đây chính là biểu hiện rõ nét của mật mã đối xứng, nơi mà hai người đều sử dụng chung một secret key (khóa bí mật).
Tuy nhiên, một vấn đề lớn ở đây là việc làm sao để A và B có thể trao đổi secret key một cách an toàn. Lần đầu tiên trao đổi khóa này dễ dẫn đến nguy cơ bị đánh cắp. Nếu có nhiều người tham gia vào cuộc trò chuyện, số lượng secret key cần thiết sẽ gia tăng theo cấp số nhân, dẫn đến khó khăn trong việc lưu trữ và quản lý.
2. Mật Mã Bất Đối Xứng
Nhận thấy những hạn chế của mật mã đối xứng, các nhà khoa học trong lĩnh vực mật mã đã phát triển một giải pháp mới: mật mã bất đối xứng. Thay vì sử dụng một secret key duy nhất, mật mã bất đối xứng sử dụng một cặp khóa: public key (khóa công khai) và private key (khóa riêng).
Khi sử dụng mật mã bất đối xứng, A và B sẽ tạo ra ổ khóa và chìa khóa riêng của họ. Họ sẽ gửi ổ khóa cho nhau để có thể bảo vệ thông tin. Khi A muốn gửi thông điệp cho B, A sẽ sử dụng public key của B để mã hóa thông điệp. B khi nhận được sẽ sử dụng private key của mình để giải mã. Tương tự, khi B muốn gửi lại thông tin cho A, B sẽ mã hóa bằng public key của A, và A sẽ giải mã bằng private key của mình.
Quá trình này có thể được mô tả qua các bước sau:
- A gửi tin cho B: A sử dụng khóa pubK-B mã hóa.
- B nhận tin từ A: B sử dụng khóa priK-B giải mã.
- B gửi tin cho A: B sử dụng khóa pubK-A mã hóa.
- A nhận tin từ B: A sử dụng khóa priK-A giải mã.
Như vậy, mật mã bất đối xứng cho phép mọi người mã hóa thông điệp dễ dàng mà chỉ những người sở hữu private key tương ứng mới có thể giải mã.
3. So Sánh Mật Mã Đối Xứng và Bất Đối Xứng
Dưới đây là bảng so sánh một số đặc điểm nổi bật giữa mật mã đối xứng và bất đối xứng:
Đặc điểm | Mật mã đối xứng | Mật mã bất đối xứng |
---|---|---|
Secret key | Sử dụng cùng một secret key để mã hóa và giải mã | Mã hóa bằng public key, giải mã bằng private key |
Tốc độ | Nhanh | Chậm hơn so với mật mã đối xứng |
Độ an toàn | Thấp hơn do cần bảo đảm tính bí mật của secret key | Cao hơn do sử dụng cặp public key và private key |
Mật mã đối xứng có ưu điểm về tốc độ mã hóa nhanh, nhưng độ an toàn bị giảm do nguy cơ lộ secret key. Ngược lại, mật mã bất đối xứng mang lại tính bảo mật cao hơn nhưng với nhược điểm về tốc độ. Do đó, mật mã bất đối xứng thường được sử dụng để trao đổi secret key của mật mã đối xứng, giúp kết hợp ưu điểm của cả hai phương pháp.
II. Mật Mã RSA - Giới Thiệu
Vào năm 1977, ba nhà nghiên cứu Ron Rivest, Adi Shamir và Len Adleman tại Học viện Công nghệ Massachusetts (MIT) đã phát triển thuật toán mã hóa RSA, sử dụng khóa bất đối xứng. Tên gọi RSA được hình thành từ các chữ cái đầu của ba tác giả sáng lập. RSA hiện nay đang là một trong những thuật toán mã hóa phổ biến nhất trong lĩnh vực mật mã bất đối xứng.
Quy trình mã hóa và giải mã của thuật toán RSA được biểu diễn như sau: với ký hiệu plaintext là P
, ciphertext là C
, và PubK
cùng PriK
lần lượt là public key và private key. Công thức cho mã hóa và giải mã như sau:
- Mã hóa:
C = E(P, PubK)
- Giải mã:
P = D(C, PriK)
Khác với các mật mã khác như AES, RSA yêu cầu sử dụng hai loại khóa khác nhau cho mã hóa và giải mã, với các hàm E()
và D()
có cơ chế hoạt động phức tạp hơn.