Bài viết này giúp bạn nắm tổng quan toàn bộ “bản đồ cryptography” và hiểu được khi nào dùng kỹ thuật nào. Đây cũng là bài Hub mở cho series “Thuật toán mã hóa & bảo mật cơ bản”.
Cryptography là gì?
Cryptography là tập hợp các kỹ thuật giúp:
- Giữ bí mật dữ liệu (confidentiality)
- Xác thực người gửi (authentication)
- Đảm bảo toàn vẹn (integrity)
- Không thể chối bỏ (non-repudiation)
Nói đơn giản: giúp dữ liệu an toàn và đáng tin.
4 nhóm kỹ thuật chính trong Cryptography
Trong thực tế, ta phân cryptography thành 4 nhóm lớn:
- Symmetric Encryption – Mã hóa đối xứng
- Asymmetric Encryption – Mã hóa bất đối xứng
- Hashing – Hàm băm một chiều
- Encoding – Mã hóa biểu diễn (không phải bảo mật)
Dưới đây là sự khác nhau của từng nhóm – cực dễ hiểu.
1. Symmetric Encryption – Mã hóa đối xứng
Chỉ dùng 1 key duy nhất cho cả mã hóa và giải mã.
plaintext + key → ciphertext
ciphertext + key → plaintext
Ưu điểm:
- Nhanh, nhẹ → phù hợp dữ liệu lớn
- Được dùng trong AES, WiFi, VPN, HTTPS (sau handshake)
Nhược điểm:
- Phải chia sẻ key bí mật cho cả hai bên → khó khăn khi gửi key qua mạng
Ví dụ thuật toán:
- AES (phổ biến nhất hiện nay)
- ChaCha20
- DES / 3DES (đã cũ)
2. Asymmetric Encryption – Mã hóa bất đối xứng
Dùng 2 key: Public Key và Private Key.
- Public key: chia cho mọi người
- Private key: giữ tuyệt mật
Nguyên tắc:
Public key → dùng để mã hóa
Private key → dùng để giải mã
Hoặc dùng để ký số:
Private key → ký
Public key → kiểm tra chữ ký
Ứng dụng:
- HTTPS handshake (RSA/ECDSA)
- SSH
- Chữ ký số
- Blockchain (ECDSA)
Nhược điểm:
- Chậm hơn symmetric rất nhiều
Ví dụ thuật toán:
- RSA
- ECC / ECDSA
3. Hashing – Hàm băm một chiều
Hashing không thể đảo ngược. Không nhằm mục đích mã hóa – mà để tạo một “dấu vân tay” cho dữ liệu.
Tính chất:
- Đầu vào tùy ý → đầu ra cố định
- Không thể giải ngược
- Thay đổi 1 ký tự → hash thay đổi toàn bộ
Ứng dụng:
- Lưu mật khẩu (bcrypt/argon2)
- Kiểm tra tính toàn vẹn file
- Tạo ID ngắn gọn
- Token, digital signature
Ví dụ:
- SHA-256
- SHA-1 (đã yếu)
- MD5 (đã yếu)
4. Encoding – Mã hóa biểu diễn (không phải bảo mật)
Encoding chỉ biến đổi dữ liệu → dạng text an toàn hơn khi truyền tải.
Không hề bảo mật!
- Ai cũng decode được
- Không cần key
Ví dụ:
- Base64
- URL-encode
- HTML entities (<, >…)
Dùng trong:
- API, JSON, web token
- Nhúng ảnh vào CSS/HTML
- Email MIME
Bảng so sánh nhanh
| Kỹ thuật | Mục đích | Đảo ngược? | Dùng key? |
|---|---|---|---|
| Symmetric | Mã hóa | Có | 1 key |
| Asymmetric | Mã hóa / chữ ký số | Có | 2 key (public/private) |
| Hashing | Toàn vẹn / mật khẩu | Không | Không |
| Encoding | Biểu diễn dữ liệu | Có | Không |
Ví dụ thực tế trong HTTPS
HTTPS là “combo” của 3 kỹ thuật:
- Asymmetric để trao đổi key
- Symmetric (AES) để mã hóa nội dung
- Hashing (HMAC) để đảm bảo toàn vẹn
Vì sao? Vì:
- Asymmetric → bảo mật khi chia sẻ key
- Symmetric → nhanh
- Hashing → kiểm tra dữ liệu bị sửa
Đây là ví dụ điển hình cho việc dùng nhiều kỹ thuật cùng lúc.
Kết luận
Cryptography là một hệ sinh thái lớn, nhưng chỉ cần nắm 4 nhóm chính là bạn đã hiểu 80% ứng dụng thực tế:
- Symmetric – Mã hóa nhanh (AES)
- Asymmetric – Chia sẻ key, ký số (RSA/ECC)
- Hashing – Toàn vẹn & mật khẩu (SHA-256, bcrypt)
- Encoding – Truyền dữ liệu (Base64)
Bình luận