Sự khác biệt giữa Băm (Hashing) và Mật mã hóa (Encryption) | Tại sao SHA-256 được khuyến nghị
“Có thể đưa về dạng gốc là Mật mã hóa”, “Tuyệt đối không thể đưa về dạng gốc là Băm”. Quy tắc sắt đá là: thông tin cá nhân thì dùng mật mã hóa, còn mật khẩu thì phải dùng băm để lưu trữ.
Bảng so sánh
| Hạng mục | Băm (Hashing) / Mật mã hóa (Encryption) |
|---|---|
| Tính khả nghịch | Bất khả nghịch (không thể quay lại) / Khả nghịch (có thể quay lại) |
| Công dụng chính | Lưu trữ mật khẩu, phát hiện thay đổi dữ liệu / Giữ bí mật tin nhắn, bảo vệ truyền tải |
| Thuật toán tiêu biểu | SHA-256, Argon2, bcrypt / AES, RSA |
🛡️ この場でハッシュ値を生成する
※ 入力時に自動で計算されます
Tại sao mật khẩu lại được băm?
Nếu chẳng may cơ sở dữ liệu bị rò rỉ, nếu mật khẩu được lưu trữ bằng cách “mật mã hóa”, kẻ tấn công nếu đánh cắp được cả “khóa” thì sẽ khôi phục được toàn bộ mật khẩu. Ngược lại, nếu được “băm”, ngay cả người quản trị cũng không thể biết được mật khẩu gốc, giúp giảm thiểu tối đa thiệt hại khi xảy ra rò rỉ dữ liệu.
Tình hình hiện tại của SHA-256
SHA-256 có tốc độ tính toán rất nhanh, nên nó cực kỳ phù hợp cho việc phát hiện thay đổi (kiểm tra tính đồng nhất của tệp), nhưng đối với việc lưu trữ mật khẩu, việc “quá nhanh” đôi khi lại là một điểm yếu (vì kẻ tấn công có thể thực hiện tấn công brute-force rất nhanh).
Vì lý do đó, để lưu trữ mật khẩu hiện đại, các thuật toán có độ phức tạp tính toán cao như bcrypt hoặc Argon2 được khuyến nghị. Khi thực hiện băm, hãy luôn thêm “Salt” (muối) để ngăn chặn các cuộc tấn công Rainbow Table (tra cứu ngược từ danh sách băm đã tính toán sẵn).