Khái niệm Hash trong bảo mật
Hashing (hàm băm) là thuật toán chuyển đổi dữ liệu đầu vào (file, tin nhắn, v.v.) thành một chuỗi ký tự có độ dài cố định (giá trị băm/hash value/checksum). Giá trị băm là duy nhất đối với dữ liệu gốc – thay đổi một bit cũng làm thay đổi hoàn toàn giá trị băm.
Mục đích sử dụng Hash trong an ninh
- Kiểm tra tính toàn vẹn dữ liệu (Integrity): So sánh hash trước/sau truyền tải để phát hiện sửa đổi, hỏng hóc hoặc tấn công can thiệp.
- Lưu trữ mật khẩu an toàn: Hệ thống lưu hash(mật khẩu) thay vì mật khẩu gốc. Khi đăng nhập, hash(mật khẩu nhập) so khớp với hash lưu trữ.
- Chữ ký số & Certificate: Hash nội dung tài liệu rồi ký bằng khóa riêng (RSA/ECDSA).
- Blockchain & Bitcoin: Hash liên kết các block (SHA-256).
- Tra cứu nhanh (Hash table): Cấu trúc dữ liệu băm để truy xuất O(1).
Các thuật toán Hash phổ biến
| Thuật toán | Độ dài đầu ra | Trạng thái | Ứng dụng điển hình |
|---|---|---|---|
| MD5 | 128-bit | Đã bị phá vỡ (không an toàn cho mật mã) | Checksum file, không dùng cho bảo mật |
| SHA-1 | 160-bit | Yếu, không khuyến khích | Git (chuyển sang SHA-256), TLS cũ |
| SHA-256 (SHA-2) | 256-bit | An toàn, tiêu chuẩn hiện tại | TLS, Bitcoin, chữ ký số, lưu mật khẩu |
| SHA-3 | 224-512-bit | An toàn, tiêu chuẩn mới | Dự phòng, ứng dụng mật mã hiện đại |
| bcrypt / scrypt / Argon2 | Tùy chỉnh | Đặc biệt cho mật khẩu (slow hash) | Lưu trữ mật khẩu người dùng |
Hash không phải mã hóa (Encryption)
- Hash: Một chiều (one-way), không thể khôi phục dữ liệu gốc.
- Mã hóa: Hai chiều (two-way), có khóa giải mã để lấy lại dữ liệu gốc.
Lưu ý bảo mật khi dùng Hash
- Luôn dùng salt ngẫu nhiên cho mỗi mật khẩu trước khi băm (ngăn rainbow table).
- Chọn thuật toán chậm (bcrypt, Argon2) cho mật khẩu để chống brute-force.
- Không tự thiết kế thuật toán hash – hãy dùng thư viện chuẩn (OpenSSL, libsodium, Bouncy Castle).
Các nghĩa khác của từ "Hash" (ngoài an ninh mạng)
- Ẩm thực: Món ăn xào thái nhỏ (thịt, khoai tây, cà rốt) – "corned beef hash".
- Lóng (slang): "Hash" = ma túy 대마 (marijuana/cannabis).
- Hash out: Thảo luận chi tiết để giải quyết vấn đề ("họ hash out kế hoạch").