Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

Hash (Hàm băm) trong an ninh mạng: Nguyên lý, Vai trò & Ứng dụng

Hash Function (Hàm băm) là gì?

Hàm toán học một chiều (one-way) chuyển đổi dữ liệu đầu vào kích thước bất kỳ → giá trị băm (hash value/digest) độ dài cố định (ví dụ: 256-bit cho SHA-256).

Đặc tính cốt lõi:

  • Deterministic: Cùng input → luôn cùng output.
  • Fast computation: Tính toán nhanh.
  • Pre-image resistance (Kháng nguyên ảnh): Khó tìm input từ hash (mất 2ⁿ phép thử).
  • Second pre-image resistance: Khó tìm input khác cho cùng hash.
  • Collision resistance (Kháng va chạm): Khó tìm 2 input khác nhau cho cùng hash (Birthday attack: 2ⁿ/²).
  • Avalanche Effect: Đổi 1 bit input → ~50% bit output đổi.

Phân loại & Thuật toán phổ biến

HọThuật toánĐộ dài OutputTrạng tháiỨng dụng điển hình
MD (Message Digest)MD5 (128-bit)128-bitBROKEN (Collision dễ dàng)Checksum file không quan trọng, legacy
SHA-1SHA-1160-bitDEPRECATED (Collision practical 2017)Git (chuyển SHA-256), legacy cert
SHA-2SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256224-512 bitAN TOÀN (Khuyến nghị NIST)TLS, Bitcoin, Cert, PGP, KDF, Blockchain
SHA-3 (Keccak)SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256 (XOF)224-512 bitAN TOÀN (Tiêu chuẩn mới)Post-quantum ready, Ethereum 2.0, New designs
BLAKE2/3BLAKE2b (512), BLAKE2s (256), BLAKE3256-512 bitRẤT NHANH, AN TOÀNFile integrity, Password hashing (BLAKE3), WireGuard
Password Hashing (Slow Hash)Argon2id (Winner PHC), bcrypt, scrypt, PBKDF2ConfigurableBẮT BUỘC cho mật khẩuLưu trữ password, Key derivation

Hash vs Encryption (Mã hóa) – Khác biệt căn bản

Đặc điểmHash (Băm)Encryption (Mã hóa)
ChiềuMột chiều (Không thể giải mã)Hai chiều (Encrypt ↔ Decrypt với Key)
KeyKhông cần key (Public function)Cần Key (Symmetric/Asymmetric)
Mục đíchToàn vẹn (Integrity), Xác thực, FingerprintBảo mật (Confidentiality)
Output lengthCố địnhTương ứng input (block cipher) hoặc ≥ input

Vai trò Hash trong An ninh mạng

1. Toàn vẹn dữ liệu (Data Integrity)

  • File download: So sánh SHA-256 checksum với giá trị nhà phát hành công bố.
  • Git: Mỗi commit = SHA-1 (đang chuyển SHA-256) của tree + parent + metadata.
  • Blockchain: Block hash liên kết chuỗi bất biến.

2. Lưu trữ mật khẩu an toàn (Password Storage)

  • KHÔNG BAO GIỜ lưu plaintext hoặc hash nhanh (MD5, SHA-256).
  • Dùng Argon2id (memory-hard, time-hard, parallelism-hard) hoặc bcrypt/scrypt/PBKDF2.
  • Lưu: $argon2id$v=19$m=65536,t=3,p=4$salt$hash.

3. Chữ ký số (Digital Signature)

Signature = Sign(Hash(message), PrivateKey). Hash trước (hiệu năng, bảo mật) → ký hash. Ví dụ: RSA-PSS, ECDSA, EdDSA (Ed25519).

4. HMAC (Hash-based Message Authentication Code)

HMAC(K, m) = Hash((K ⊕ opad) || Hash((K ⊕ ipad) || m)). Xác thực tính toàn vẹn & nguồn gốc tin nhắn. Dùng trong: JWT (HS256), API Auth, TLS, IPsec.

5. KDF (Key Derivation Function)

  • HKDF (HMAC-based KDF): Từ master secret → derive nhiều key (Enc, Auth, IV).
  • PBKDF2/Argon2: Từ password → encryption key.

6. Certificate & PKI

  • Cert fingerprint: SHA-256 hash của DER-encoded cert.
  • Certificate Transparency log: Merkle tree của cert hashes.

7. Threat Intel & Malware Analysis

  • File hash (MD5/SHA-1/SHA-256) = IOC (Indicator of Compromise).
  • YARA rule match hash sections.
  • VT/HA query bằng hash.

Tấn công vào Hash & Phòng thủ

Tấn côngMô tảPhòng thủ
Collision AttackTìm x ≠ y: H(x)=H(y)Dùng SHA-256+/SHA-3/BLAKE2, output ≥256-bit
Pre-image AttackTìm x: H(x)=hOutput ≥256-bit, salt cho password hash
Length ExtensionH(k||m) → H(k||m||pad||m')Dùng HMAC, SHA-3, BLAKE2 (không bị)
Rainbow TableBảng tra hash phổ biếnSalt duy nhất/user, Slow hash (Argon2id)
Side-channelTiming, Power, CacheConstant-time impl, Masking, Blinding

Best Practice triển khai

  1. Mục đích chung (Integrity, KDF, Signature): SHA-256 (SHA-2) hoặc SHA3-256 / BLAKE2b/3.
  2. Mật khẩu người dùng: Argon2id (m=64MB, t=3, p=4) → bcrypt (cost≥12) → scrypt → PBKDF2-HMAC-SHA256 (iter≥600k).
  3. API Auth (Stateless): HMAC-SHA256 hoặc JWT HS256/RS256/ES256.
  4. TLS 1.3: Bắt buộc AEAD (AES-GCM, ChaCha20-Poly1305) – hash bên trong HKDF.
  5. Không tự thiết kế crypto: Dùng thư viện đã audit: libsodium, OpenSSL, Bouncy Castle, Go crypto, Rust ring.