Hash trong an ninh mạng là gì?
Hash (Giá trị băm / Message Digest) là chuỗi ký tự độ dài cố định (fixed-length) được tạo ra từ dữ liệu đầu vào bất kỳ kích thước bằng hàm băm một chiều (one-way hash function). Đặc điểm:
- Một chiều (One-way): Dễ tính hash từ input, không thể nghịch đảo (reverse) để lấy input từ hash.
- Deterministic: Cùng input → luôn cùng output.
- Avalanche effect: Thay đổi 1 bit input → hash thay đổi hoàn toàn (~50% bit).
- Collision resistance: Khó tìm 2 input khác nhau cho cùng hash (SHA-256: 2^128 effort).
- Không dùng khóa (keyless) — khác HMAC (keyed-hash).
Mục đích: kiểm tra toàn vẹn dữ liệu (integrity), lưu trữ mật khẩu an toàn, chữ ký số, blockchain, deduplication.
"Hash" trong khoa học máy tính có nghĩa gì?
Hàm chuyển đổi giá trị (mapping) từ miền lớn (kích thước bất kỳ) đến miền nhỏ (kích thước cố định). Ứng dụng:
- Bảng băm (Hash Table/Map/Dictionary) — O(1) lookup.
- Nén dữ liệu (Data compression) — fingerprinting.
- Checksum / Integrity verification (CRC32, MD5, SHA).
- Indexing cơ sở dữ liệu (Hash index).
- Cấu trúc dữ liệu: Bloom filter, Merkle tree, Consistent hashing.
Hash trong Cybersecurity
Giá trị 'hash' sinh ra khi đưa dữ liệu/file vào thuật toán băm. So sánh với mã hóa (Encryption):
| Đặc điểm | Hashing (Băm) | Encryption (Mã hóa) |
|---|---|---|
| Chiều | Một chiều (One-way) | Hai chiều (Two-way: encrypt ↔ decrypt) |
| Khóa | Không cần khóa (keyless) | Cần khóa (symmetric/asymmetric) |
| Mục đích | Toàn vẹn (Integrity), Xác thực (Authentication) | Bảo mật (Confidentiality) |
| Kích thước output | Cố định (fixed) | Tương đương input (khoảng) |
| Ví dụ | MD5, SHA-1, SHA-256, SHA-3, BLAKE2/3 | AES, ChaCha20, RSA, ECC |
Hash là gì và tại sao quan trọng?
- Chuyển mỗi khối dữ liệu (data block) thành chuỗi bit độ dài cố định (fixed-size bit string).
- File = nhiều data block → hash toàn file = hash của nội dung toàn bộ.
- Biến chuỗi gốc thành khóa độ dài cố định, ngắn gọn — dễ so sánh, lưu trữ, truyền tải.
- Ứng dụng: Verify file download (checksum), Git commit ID, Docker image digest, TLS certificate fingerprint, Password storage, Blockchain (Merkle root, PoW).
Cách Hashing dùng trong bảo mật
- Lưu trữ mật khẩu: Không lưu plaintext. Lưu
hash(password + salt). Salt ngẫu nhiên cho mỗi user → chống Rainbow Table. - Xác thực đăng nhập: User nhập pass → hash(pass + salt) → so sánh với hash lưu trong DB. Khớp → authenticated.
- Kiểm tra toàn vẹn file: Hash file gốc → phân phối kèm hash. Người nhận hash file tải về → so sánh. Khác nhau = file bị sửa đổi/hỏng.
- Chữ ký số (Digital Signature): Hash(message) → ký bằng private key (RSA/ECDSA/EdDSA). Verify: hash(message) so sánh với decrypt(signature, public key).
- Certificate Transparency / CT Log: Merkle tree hash của certificate.
Ví dụ giá trị Hash
Input: "Hello, World!"
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
SHA3-256: 3152e8c2e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8
MD5: 65a8e27d8879283831b664bd8b7f0ad4 (đã broken, không dùng cho security)
SHA-256, SHA3-256: output 256-bit (64 ký tự hex). BLAKE3: nhanh hơn, song song hóa tốt.
Hash trong tiếng lóng (Slang)
Hash = Hashish / Cannabis concentrate. Không liên quan đến an ninh mạng. Các từ lóng khác: Pot, Weed, Ganja, Mary Jane, 420, Bud.
"Hash out" nghĩa là gì?
Động từ (Mỹ, phi chính thức): Thảo luận chi tiết để giải quyết vấn đề ("hanno hashed out the details"). Không liên quan đến hash function.
Hash có phải từ thật không?
Có. Hash (danh từ): Món ăn thái nhỏ thịt/củi xào (hashed brown potatoes). Hash (động từ): Thái nhỏ, xào; hoặc tính toán hash function.
FileHash là gì?
PowerShell cmdlet Get-FileHash tính hash giá trị file dùng thuật toán chỉ định (SHA256 mặc định, MD5, SHA1, SHA384, SHA512, BLAKE2B256...). Dùng để: verify file download, so sánh 2 file có nội dung giống hệt nhau (hash trùng = nội dung trùng).
Hashing trong mạng (Networking)
Ánh xạ dữ liệu kích thước bất kỳ → độ dài cố định bằng thuật toán. Kết quả: Hash value / Hash code / Hash sum / Hash digest. Hàm một chiều (khác encryption hai chiều).
Hash trong mã hóa (Encryption context)
Giá trị băm không thể reverse-engineer để lấy plaintext gốc → one-way encryption. Dùng để:
- Bảo mật dữ liệu tại chỗ (data at rest) — password hash.
- Bảo vệ PIN/mật khẩu ngay cả khi DB bị lộ (breach).
- Key Derivation Function (KDF): PBKDF2, Argon2, scrypt, bcrypt — intentionally slow để chống brute-force.
Hashing và tầm quan trọng
- Chứng minh tính xác thực (authenticity) và toàn vẹn (integrity) của dữ liệu.
- Ngăn lưu mật khẩu plaintext trong DB (yêu cầu GDPR, PCI DSS, HIPAA).
- Đảm bảo file/tài liệu không bị thay đổi (code signing, SBOM, SLSA, Reproducible Builds).
Chức năng hàm băm và tầm quan trọng
- Kết hợp với chữ ký số (Digital Signature): Hash message → ký hash (nhanh hơn ký toàn bộ message).
- Hàm băm tốt: thay đổi 1 bit input → ~50% bit output thay đổi (avalanche). Collision resistance mạnh.
- Chữ ký điện tử: băm thông điệp → ký giá trị băm.
Thuật toán Hash phổ biến trong Security (2024)
| Thuật toán | Output | Trạng thái | Dùng cho |
|---|---|---|---|
| SHA-256 / SHA-384 / SHA-512 | 256/384/512-bit | An toàn (FIPS 180-4) | TLS, Cert, Bitcoin, Git, Password (với salt+KDF) |
| SHA3-256 / SHA3-512 | 256/512-bit | An toàn (FIPS 202) | Thay thế SHA-2 trong tương lai |
| BLAKE2b / BLAKE2s / BLAKE3 | Tùy chọn (max 512-bit) | An toàn, rất nhanh | File integrity, Crypto, Password hashing (BLAKE2) |
| Argon2id | Tùy chọn | KDF chuẩn (RFC 9106) | Password hashing (memory-hard, side-channel resistant) |
| bcrypt | 192-bit | An toàn, cũ hơn Argon2 | Password hashing (cost factor adjustable) |
| MD5 / SHA-1 | 128/160-bit | BROKEN (Collision attack) | Chỉ dùng non-security: checksum file, Git (SHA-1 transitioning to SHA-256) |