Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Các ứng dụng của Hàm băm mật mã (Cryptographic Hash Function)

Hàm băm mật mã là "dao swiss army" của mật mã học — building block cho hàng chục ứng dụng bảo mật cốt lõi.

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

  • Quy trình: Sig = Sign(SK, H(M)); Verify: Verify(PK, M, Sig).
  • Tại sao hash trước khi ký? Hiệu quả (ký 256-bit thay vì MB/GB data), an toàn (collision resistance bảo vệ chống existential forgery).
  • Thuật toán: RSA-PSS (SHA-256/384/512), ECDSA (SHA-256/384/512), EdDSA (Ed25519 - internal SHA-512), Dilithium (PQC, SHAKE256).
  • Ứng dụng: TLS certificate, code signing, document signing, blockchain transaction, JWT (RS256/ES256).

2. Xác thực toàn vẹn tệp (File Integrity Verification)

  • Checksum: SHA-256(file) so sánh với giá trị công bố (website, .sha256 file, sig).
  • Package manager: npm (SHA-512), PyPI (SHA-256), Debian/APT (SHA-256), Rust/Cargo (SHA-256).
  • Binary transparency / Reproducible builds: Hash build artifact chứng minh build từ source.
  • Git: Commit ID = SHA-1 (đang migrate SHA-256). Merkle tree (tree object hash).

3. Băm mật khẩu (Password Hashing) — Quan trọng nhất

  • Không dùng hash nhanh (SHA-256, MD5) trực tiếp! Dễ brute-force GPU (100+ GH/s SHA-256).
  • Dùng KDF chậm (Password Hashing):
    • Argon2id (PHC winner): memory-hard (m KB), time-hard (t passes), parallelism (p lanes). Default: m=64MB, t=3, p=4.
    • bcrypt: cost factor (log₂ rounds) ≥ 12 (2024). 72-byte limit.
    • scrypt: N, r, p params. Memory-hard gốc.
    • PBKDF2-HMAC-SHA256: iterations ≥ 600,000. Chỉ time-hard. Chỉ khi bắt buộc FIPS.
  • Lưu format MCF: $algo$params$salt$hash. Salt duy nhất/user (16-32 byte random). Verify constant-time. Upgrade on login.

4. Dẫn xuất khóa (Key Derivation - KDF)

  • HKDF (RFC 5869): Extract-then-Expand. HKDF-Extract(salt, IKM) → PRK; HKDF-Expand(PRK, info, L) → OKM. Dùng SHA-256/512. TLS 1.3, Signal, MLS, AWS KMS.
  • SHAKE256 (XOF): Dẫn xuất output tùy ý độ dài, domain separation tự nhiên (customization string).
  • KBKDF (NIST SP 800-108): Counter mode, feedback mode, double-pipeline iteration mode.

5. Dấu thời gian số tin cậy (Trusted Digital Timestamping)

  • Mục đích: Chứng minh dữ liệu tồn tại tại thời điểm T (bằng chứng IP, log, audit).
  • Quy trình: Client → Hash data → Gửi hash cho TSA (Time Stamping Authority) → TSA ký Sign(TSA_SK, hash || time || nonce) → Trả TimeStampToken.
  • Verify: Check TSA cert chain + signature + time.
  • Chuẩn: RFC 3161 (TSP), RFC 5816 (ESS). Dùng trong long-term validation (LTV), blockchain anchoring.

6. Phát hiện Rootkit (Rootkit Detection)

  • Rootkit: Malware ẩn presence, hook kernel, hide file/process/network.
  • Phát hiện dựa trên hash: Known-good hash database (system binary, kernel module, critical config).
  • Công cụ: AIDE, Tripwire, Samhain, OSSEC/Wazuh, systemd-fsck-root. So sánh hash runtime với baseline.
  • Kết hợp: Kernel module signature verification (Linux kernel lockdown, UEFI Secure Boot), eBPF monitoring, memory forensics (Volatility).

7. Các ứng dụng khác

Ứng dụngCơ chế dùng Hash
Blockchain / CryptocurrencyBlock hash (PoW), Merkle root (tx integrity), Address (Hash160 = RIPEMD160(SHA256(pubkey))), Commitment (Pedersen hash)
TLS / HTTPSCertificate fingerprint (SHA-256), PRF (HKDF-SHA256), Finished message (verify handshake transcript hash)
Message Authentication (HMAC)HMAC(K, M) = H((K⊕opad)||H((K⊕ipad)||M)). JWT HS256, API auth, cookie signing
Key Derivation (E2EE)Signal Double Ratchet: HKDF-SHA256 chain. MLS: HPKE KDF.
Proof-of-Work / ConsensusBitcoin: SHA-256d (double SHA-256) < target. Ethereum: Keccak-256 (Ethash - deprecated post-Merge)
Deduplication / Content-addressable StorageGit (SHA-1→SHA-256), IPFS (CID = multihash SHA-256/BLAKE3), BorgBackup, restic
Verifiable Random Function (VRF)Algorand, Cardano, Dfinity: VRF = Hash(SK, input) + Proof. Hash = ECVRF / RSA-FDH-VRF

Tóm tắt lựa chọn Hash cho ứng dụng (2024)

Application              | Hash Algorithm
-------------------------|-------------------------
Digital Signature        | SHA-256/384/512, SHA3-256, SHAKE256
File Integrity / Checksum| SHA-256 (crypto), BLAKE3/xxHash (speed)
Password Storage         | Argon2id (KDF), bcrypt, scrypt
Key Derivation (HKDF)    | HKDF-SHA256, SHAKE256
Blockchain (Bitcoin)     | SHA-256d
Blockchain (Ethereum)    | Keccak-256
Merkle Tree / CID        | SHA-256, BLAKE3 (multihash)
HMAC / MAC               | HMAC-SHA256, KMAC (SHA-3)
Timestamping (RFC 3161)  | SHA-256/384/512
Rootkit Detection        | SHA-256 (baseline db)
VRF                      | ECVRF (SHA-256), RSA-FDH-VRF

Nguyên tắc vàng: Mỗi ứng dụng chọn hash phù hợp đặc tính (collision resistance, speed, XOF, domain separation). Không dùng một hash cho mọi thứ nếu không cần thiết — domain separation là key.