Nhiều người nghĩ rằng: “Có mã hóa là an toàn.”
Thực tế thì không. Rất nhiều hệ thống vẫn dùng crypto, nhưng vẫn lộ dữ liệu như thường.
Lý do nằm ở một khái niệm quen mà dễ bị xem nhẹ:
👉 Cryptographic Failures.
❓ Cryptographic Failures là gì?
Cryptographic Failures xảy ra khi hệ thống:
- Mã hóa sai cách
- Dùng thuật toán yếu hoặc lỗi thời
- Quản lý khóa (key) kém
- Hoặc… không mã hóa dữ liệu nhạy cảm ngay từ đầu
👉 Crypto có, nhưng bảo mật thì không.
OWASP xếp Cryptographic Failures Top 2 trong OWASP Top 10 vì hậu quả của nó thường là:
- Lộ mật khẩu
- Lộ dữ liệu cá nhân
- Lộ token, session, API key
💥 Những sai lầm cryptographic phổ biến
1️⃣ Không mã hóa dữ liệu nhạy cảm
- Password lưu plain-text
- Token gửi qua HTTP
- Thông tin cá nhân lưu thẳng DB
2️⃣ Dùng thuật toán yếu hoặc lỗi thời
- MD5, SHA1 cho mật khẩu
- DES, RC4 cho mã hóa
- Key quá ngắn
👉 Không cần hack, chỉ cần crack.
3️⃣ Hash password sai cách
- Không dùng salt
- Không dùng thuật toán chuyên cho password
hash = SHA256(password)
📌 Đúng:
- bcrypt
- Argon2
- PBKDF2
4️⃣ Quản lý key kém
- Hard-code key trong source
- Dùng chung key cho mọi user
- Không rotate key
👉 Lộ key = lộ toàn bộ dữ liệu đã mã hóa.
5️⃣ Tin vào “mã hóa tự làm”
“Tôi viết thuật toán riêng cho an toàn hơn”
Đây là red flag lớn trong security.
👉 Crypto tự chế gần như luôn sai.
🚨 Vì sao Cryptographic Failures nguy hiểm?
- Không tạo lỗi rõ ràng
- App vẫn chạy “bình thường”
- Dev tưởng đã an toàn
- Hacker chỉ cần… đọc dữ liệu
- Không phải do exploit phức tạp
- Mà do crypto dùng sai từ đầu
🛡️ Cách phòng tránh Cryptographic Failures
✅ Mã hóa đúng thứ cần mã hóa
- Password
- Token
- Dữ liệu cá nhân
- Secret / API key
✅ Dùng thuật toán chuẩn, được kiểm chứng
- HTTPS (TLS) cho truyền dữ liệu
- AES cho mã hóa dữ liệu
- bcrypt / Argon2 cho password
✅ Quản lý key nghiêm túc
- Không hard-code
- Dùng secret manager
- Rotate key định kỳ
✅ Đừng tự viết crypto
“Use crypto, don’t invent it.”
Dùng thư viện chuẩn, cập nhật thường xuyên.
🧠 Góc nhìn security
Cryptographic Failures thường không đến từ hacker quá giỏi,
mà đến từ:
- Dev chủ quan
- Hiểu sai về crypto
- Nghĩ rằng “có mã hóa là đủ”
Sai một chi tiết nhỏ trong crypto = mất toàn bộ hệ thống.

🎯 Kết luận
Cryptographic Failures không ồn ào.
Nó không làm sập server.
Nó không để lại log tấn công rõ ràng.
Nó chỉ âm thầm làm lộ mọi thứ.
Nếu bạn đang xây dựng hệ thống:
- Hãy xem lại cách bạn mã hóa
- Xem lại thuật toán
- Và đặc biệt là… cách bạn quản lý key
👉 Sai là cách chúng ta dùng nó.