Danh mục sản phẩm
Bài 9. Mật mã nền tảng: mã hóa đối xứng, bất đối xứng, trao đổi khóa
Khóa học CompTIA Security+ SY0-801 · Phần 1: Khái niệm bảo mật cốt lõi · Bài 9 · 🎯 Objective 1.3 · ⏱️ Đọc khoảng 14 phút · 🧪 Không cần lab · 📝 5 câu bài tập cuối bài
🎯 Mục tiêu bài học
- Nắm các khái niệm nền: bản rõ, bản mã, thuật toán, khóa.
- Phân biệt mã hóa đối xứng và bất đối xứng, ưu nhược điểm và ví dụ của từng loại.
- Hiểu bài toán chuyển khóa và cách trao đổi khóa (Diffie-Hellman) giải quyết nó.
- Giải thích vì sao thực tế luôn kết hợp cả hai loại, ví dụ trong TLS.
📎 Vị trí trong đề thi: bài này mở đầu Objective 1.3 (mật mã). Bài 10 học hashing và chữ ký số, Bài 11 học PKI và chứng chỉ, Bài 12 học quản lý khóa. Bài 9 là nền cho cả ba bài đó. Mật mã là chủ đề hay gây rối nên đề thi thường dùng tình huống thay vì định nghĩa trần.
💡 Liên hệ thực tế: mật khẩu file gửi cùng email
Thứ Năm, 10:30. Chị Lan cần gửi file Excel báo cáo thuế cho công ty kiểm toán. Chị nén file lại, đặt mật khẩu "Congty2026", rồi gửi file kèm mật khẩu trong cùng một email. Đây là tình huống minh họa, không phải vụ việc có thật.
Nam thấy và hỏi: "Chị khóa hộp lại rồi dán chìa khóa lên nắp hộp à?" Chị Lan cười ngượng. Nam giải thích rồi hướng dẫn làm đúng:
- Mã hóa file bằng một khóa chung (mã hóa đối xứng). Cách này nhanh và phù hợp cho file lớn, nhưng người nhận cũng phải có đúng khóa đó.
- Vấn đề: khóa đi đường nào tới người nhận mà không bị lộ? Gửi chung email là vô nghĩa. Gọi điện đọc cho nhau thì chậm và dễ nhầm.
- Giải pháp: dùng khóa công khai của công ty kiểm toán để mã hóa cái khóa chung (mã hóa bất đối xứng). Chỉ người giữ khóa riêng tương ứng mới mở được.
Nam nói thêm: "Mỗi lần chị vào trang web ngân hàng, trình duyệt làm đúng điều đó trong chưa đầy một giây, và chị không phải nhớ gì cả."
🔑 Hình 9a. Hai cách mã hóa, mỗi cách có một điểm mạnh và một bài toán riêng.
📘 Kiến thức cốt lõi
🧱 Các khái niệm nền
| Khái niệm | Ý nghĩa |
|---|---|
| Bản rõ (plaintext) | Dữ liệu gốc, đọc được. |
| Bản mã (ciphertext) | Dữ liệu sau khi mã hóa, không đọc được nếu thiếu khóa. |
| Thuật toán (algorithm hay cipher) | Quy tắc toán học để mã hóa và giải mã. |
| Khóa (key) | Giá trị bí mật điều khiển thuật toán. |
Một nguyên tắc nền quan trọng (Kerckhoffs): độ an toàn phải nằm ở khóa, không nằm ở việc giữ bí mật thuật toán. Các thuật toán tốt như AES được công bố công khai cho cả thế giới kiểm tra. Nếu có ai bán "thuật toán bí mật tự chế", hãy nghi ngờ.
Mật mã mang lại tính bí mật (C trong CIA, Bài 2). Khi kết hợp với hashing và chữ ký số ở Bài 10, nó còn bảo vệ toàn vẹn và hỗ trợ không thể chối bỏ.
🔐 Mã hóa đối xứng (Symmetric)
Mã hóa đối xứng dùng cùng một khóa để mã hóa và giải mã.
| Đặc điểm | Chi tiết |
|---|---|
| Tốc độ | Nhanh, phù hợp mã hóa lượng dữ liệu lớn (ổ đĩa, file, luồng truyền) |
| Thuật toán tiêu biểu | AES (khóa 128, 192 hoặc 256 bit), ChaCha20 |
| Thuật toán lạc hậu | DES, 3DES: không nên dùng cho hệ thống mới |
| Điểm yếu | Bài toán chuyển khóa: hai bên phải có chung khóa bí mật mà không để người khác biết |
| Số khóa | Mỗi cặp người cần một khóa riêng, số khóa tăng nhanh khi nhiều người |
Thuật toán đối xứng chia thành hai nhóm. Mã khối (block cipher, ví dụ AES) xử lý dữ liệu theo từng khối cố định. Mã dòng (stream cipher, ví dụ ChaCha20) xử lý từng bit hoặc byte liên tục. Chế độ hoạt động của mã khối cũng quan trọng: chế độ như GCM vừa mã hóa vừa kiểm tra toàn vẹn, còn ECB để lộ khuôn mẫu của dữ liệu và không nên dùng.
🗝️ Mã hóa bất đối xứng (Asymmetric)
Mã hóa bất đối xứng dùng một cặp khóa liên quan toán học với nhau: khóa công khai (public key) và khóa riêng(private key).
- Dữ liệu mã hóa bằng khóa công khai chỉ giải mã được bằng khóa riêng tương ứng.
- Khóa công khai được phát cho mọi người, khóa riêng chỉ chủ sở hữu giữ.
- Biết khóa công khai không suy ra được khóa riêng (trong thực tế tính toán).
| Đặc điểm | Chi tiết |
|---|---|
| Tốc độ | Chậm hơn nhiều so với đối xứng, không dùng để mã hóa dữ liệu lớn |
| Thuật toán tiêu biểu | RSA (khuyến nghị tối thiểu 2048 bit), ECC (đường cong elliptic) |
| Ưu điểm | Giải quyết việc trao khóa: không cần bí mật chia sẻ trước |
| Công dụng | Bảo vệ khóa phiên, trao đổi khóa, chữ ký số (Bài 10), chứng chỉ (Bài 11) |
ECC cho cùng mức an toàn với khóa ngắn hơn nhiều so với RSA (ví dụ ECC 256 bit tương đương mức an toàn khoảng RSA 3072 bit), nên tính toán nhẹ hơn. Đây là lý do ECC phổ biến trên thiết bị di động và IoT.
🎯 Mẹo làm bài: đề hỏi "người A muốn gửi bí mật cho người B, A dùng khóa nào để mã hóa?" thì đáp án là khóa công khai của B. Người B giải mã bằng khóa riêng của B. Chiều ngược lại (ký bằng khóa riêng, kiểm tra bằng khóa công khai) là chữ ký số, bạn sẽ học ở Bài 10.
🤝 Trao đổi khóa và hybrid
Nếu bất đối xứng giải quyết trao khóa nhưng chậm, còn đối xứng nhanh nhưng khó trao khóa, giải pháp là kết hợp: dùng bất đối xứng để thống nhất một khóa phiên (session key) ngắn hạn, rồi dùng khóa phiên đó mã hóa dữ liệu bằng đối xứng. Đây chính là cách TLS (https) hoạt động.
🤝 Hình 9b. Ba bước: trao đổi giá trị công khai, mỗi bên tự tính ra cùng một khóa phiên, rồi mã hóa dữ liệu.
Diffie-Hellman (DH) là giao thức cho phép hai bên cùng tính ra một bí mật chung qua một kênh công khai mà không cần gửi bí mật đó đi. Mỗi bên gửi một giá trị công khai, kẻ nghe lén thấy các giá trị này nhưng không thể suy ra bí mật chung. Phiên bản dùng đường cong elliptic gọi là ECDH.
Biến thể ephemeral (DHE, ECDHE) tạo khóa mới cho mỗi phiên. Nhờ đó nếu khóa dài hạn của máy chủ lộ về sau, các phiên cũ đã ghi lại vẫn không giải mã được. Tính chất này gọi là bảo mật chuyển tiếp (forward secrecy).
Hai lưu ý:
- DH chỉ cho bạn một bí mật chung, không cho bạn biết đối phương là ai. Nếu không xác thực, kẻ đứng giữa có thể giả mạo (tấn công man-in-the-middle). Vì thế TLS kết hợp DH với chứng chỉ số (Bài 11).
- Độ dài khóa quan trọng: khóa dài hơn thì khó tấn công vét cạn hơn, nhưng cũng tốn tài nguyên hơn. Chọn độ dài theo khuyến nghị hiện hành, không tự chế.
🧠 Áp vào câu chuyện của Nam
| Tình huống | Khái niệm |
|---|---|
| Mã hóa file Excel bằng một mật khẩu chung | Mã hóa đối xứng |
| Gửi mật khẩu cùng email với file | Thất bại trong chuyển khóa |
| Dùng khóa công khai của công ty kiểm toán để bảo vệ khóa chung | Mã hóa bất đối xứng, hybrid |
| Trình duyệt và ngân hàng tự thống nhất khóa phiên | Trao đổi khóa (Diffie-Hellman, ECDHE) |
| Dữ liệu trên trang ngân hàng được mã hóa tốc độ cao | Mã hóa đối xứng (AES) với khóa phiên |
🔮 Một lưu ý về máy tính lượng tử
Máy tính lượng tử đủ mạnh có thể phá RSA và ECC (dựa vào thuật toán của Shor), nhưng ít ảnh hưởng đến AES khi dùng khóa đủ dài (AES-256 vẫn được xem là an toàn). Vì vậy các tổ chức tiêu chuẩn đã công bố các thuật toán mật mã hậu lượng tử (post-quantum cryptography) để thay thế dần. Hiện tại bạn chỉ cần nhớ ý chính: bất đối xứng là phần cần thay trước.
📖 Thuật ngữ cần nhớ
| Thuật ngữ | Nghĩa |
|---|---|
| Plaintext, ciphertext | Bản rõ, bản mã. |
| Symmetric encryption | Mã hóa đối xứng, một khóa chung. |
| Asymmetric encryption | Mã hóa bất đối xứng, cặp khóa công khai và riêng. |
| AES | Thuật toán đối xứng tiêu chuẩn, khóa 128, 192, 256 bit. |
| RSA | Thuật toán bất đối xứng dựa trên phân tích số nguyên lớn. |
| ECC | Mật mã đường cong elliptic, khóa ngắn nhưng an toàn tương đương. |
| Public key, private key | Khóa công khai, khóa riêng. |
| Session key | Khóa phiên đối xứng dùng ngắn hạn. |
| Diffie-Hellman | Giao thức cùng tính ra bí mật chung qua kênh công khai. |
| Forward secrecy | Lộ khóa dài hạn không làm lộ các phiên đã qua. |
| Key length | Độ dài khóa, ảnh hưởng độ khó tấn công vét cạn. |
| Hybrid encryption | Kết hợp bất đối xứng để trao khóa và đối xứng để mã hóa dữ liệu. |
📌 Tóm tắt nhanh
- Đối xứng: một khóa chung, nhanh, dùng cho dữ liệu lớn (AES). Khó ở chỗ chuyển khóa.
- Bất đối xứng: cặp khóa công khai và riêng, chậm hơn, giải quyết việc trao khóa (RSA, ECC).
- Gửi bí mật cho B: mã hóa bằng khóa công khai của B, B giải mã bằng khóa riêng của B.
- Thực tế dùng hybrid: Diffie-Hellman thống nhất khóa phiên, rồi AES mã hóa dữ liệu.
- Ephemeral DH cho bảo mật chuyển tiếp. DH cần được xác thực để chống man-in-the-middle.
💬 Hỏi & Đáp nhanh
❓ Vì sao không dùng bất đối xứng cho mọi thứ? Vì nó chậm hơn nhiều và giới hạn kích thước dữ liệu mã hóa trực tiếp. Mã hóa cả file lớn bằng RSA là không thực tế. Dùng nó để bảo vệ một khóa nhỏ, còn dữ liệu thì mã hóa đối xứng.
❓ Khóa công khai bị lộ thì sao? Không sao. Khóa công khai sinh ra để chia sẻ. Điều quan trọng là phải chắc chắn khóa công khai đó thật sự thuộc về người bạn nghĩ. Việc này do chứng chỉ số và PKI đảm nhiệm, bạn sẽ học ở Bài 11.
❓ Khóa riêng bị lộ thì sao? Đó là sự cố nghiêm trọng. Kẻ có khóa riêng có thể giải mã dữ liệu gửi cho chủ khóa và giả mạo chữ ký của họ. Phải thu hồi khóa, phát hành khóa mới và đánh giá thiệt hại. Bài 12 sẽ nói về cách bảo vệ khóa.
📝 Bài tập đánh giá
Tự chọn đáp án cho từng câu, rồi đối chiếu với phần đáp án ở cuối bài.
Câu 1. Thuật toán AES thuộc loại mã hóa nào?
- A. Đối xứng
- B. Bất đối xứng
- C. Hashing
- D. Chữ ký số
Câu 2. Chị Lan muốn gửi một thông điệp bí mật cho anh Minh bằng mã hóa bất đối xứng. Chị cần dùng khóa nào để mã hóa?
- A. Khóa riêng của chị Lan
- B. Khóa công khai của chị Lan
- C. Khóa công khai của anh Minh
- D. Khóa riêng của anh Minh
Câu 3. Điểm yếu chính của mã hóa đối xứng là gì?
- A. Rất chậm khi mã hóa dữ liệu lớn
- B. Khó chia sẻ khóa chung một cách an toàn giữa hai bên
- C. Không thể bảo vệ tính bí mật
- D. Cần chứng chỉ số cho mỗi lần mã hóa
Câu 4. Giao thức nào cho phép hai bên cùng tính ra một bí mật chung qua kênh công khai mà không cần gửi bí mật đó?
- A. AES
- B. RSA
- C. Diffie-Hellman
- D. SHA-256
Câu 5. Vì sao TLS dùng cả mã hóa bất đối xứng lẫn đối xứng?
- A. Vì đối xứng nhanh nên dùng cho dữ liệu, bất đối xứng giúp thống nhất khóa phiên an toàn
- B. Vì bất đối xứng mã hóa dữ liệu lớn nhanh hơn
- C. Vì đối xứng không cần khóa
- D. Vì hai loại này giống hệt nhau về chức năng
👉 Đáp án
Câu 1: A — AES là thuật toán mã hóa đối xứng, dùng cùng một khóa để mã hóa và giải mã.
Câu 2: C — Gửi bí mật cho ai thì mã hóa bằng khóa công khai của người đó. Chỉ anh Minh giữ khóa riêng nên chỉ anh giải mã được.
Câu 3: B — Đối xứng nhanh nhưng hai bên phải chia sẻ khóa bí mật mà không bị lộ, đó là bài toán chuyển khóa.
Câu 4: C — Diffie-Hellman cho phép hai bên cùng tính ra bí mật chung mà không gửi nó qua mạng.
Câu 5: A — TLS dùng trao đổi khóa để thống nhất khóa phiên, rồi dùng mã hóa đối xứng tốc độ cao cho dữ liệu.
📚 Bài viết thuộc khóa học CompTIA Security+ của VNExperts
