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

Các loại Hashing (Hàm băm) trong An ninh Thông tin

Phân loại theo mục đích

LoạiĐại diệnĐầu raMục đích chínhTrạng thái
Cryptographic Hash (Mật mã)SHA-256, SHA-3, BLAKE2/3256-512-bitChữ ký số, MAC, KDF, blockchain, integrityAn toàn, tiêu chuẩn
Password Hashing (KDF chậm)Argon2id, bcrypt, scrypt, PBKDF2Tuỳ chỉnh (có salt, cost)Lưu trữ mật khẩu (chống brute-force)Bắt buộc cho password
Checksum / Non-cryptoCRC32, xxHash, MurmurHash, FNV32/64-bitKiểm tra lỗi truyền tải, hash table, deduplicationKhông dùng cho bảo mật
Legacy / BrokenMD5, SHA-1, RIPEMD-160128-160-bitHệ thống cũ, git (SHA-1), Bitcoin (RIPEMD-160)Cấm dùng mới

Chi tiết các thuật toán Cryptographic Hash chính

SHA-2 Family (FIPS 180-4) — Tiêu chuẩn hiện tại

  • SHA-224/256: 32-bit word, 64 vòng, block 512-bit. SHA-256 phổ biến nhất.
  • SHA-384/512: 64-bit word, 80 vòng, block 1024-bit. Nhanh hơn trên CPU 64-bit.
  • SHA-512/224, SHA-512/256: Truncated output, chống length extension tự nhiên.

SHA-3 Family (FIPS 202) — Thiết kế Sponge

  • Keccak-f[1600] permutation (24 vòng), rate + capacity = 1600.
  • SHA3-224/256/384/512: Fixed output.
  • SHAKE128/256 (XOF): Output tùy ý độ dài — cực hữu ích cho KDF, domain separation, STROBE.
  • Không bị length extension attack (khác Merkle-Damgård).

BLAKE2 / BLAKE3 — Hiệu năng cao

  • BLAKE2b (64-bit) / BLAKE2s (32-bit): Nhanh hơn MD5/SHA-1 trên phần mềm, an toàn như SHA-3. Có keyed mode (MAC), salt, personalization.
  • BLAKE3: Tree-hashing, parallelizable, SIMD, cực nhanh (1-2 cpb), XOF, keyed, derive key. Khuyên dùng cho high-performance hashing 2024+.

RIPEMD-160

  • Thiết kế song song 2 dòng (dual-line), 160-bit. Dùng trong Bitcoin (scriptPubKey P2PKH) + SHA-256 (Hash160).
  • An toàn nhưng chậm hơn SHA-256, ít hỗ trợ phần cứng. Không khuyên dùng mới.

Password Hashing — Đặc biệt quan trọng

Không bao giờ dùng SHA/MD5/CRC trực tiếp cho mật khẩu. Cần:

  • Salt duy nhất mỗi mật khẩu (16-32 byte random).
  • Cost factor (time/memory hardness) điều chỉnh được.
  • Argon2id (PHC winner 2015): memory-hard, time-hard, parallelism adjustable. Tiêu chuẩn vàng.
  • bcrypt: Blowfish-based, cost factor (work factor), giới hạn 72 byte input. Vẫn tốt, phổ biến.
  • scrypt: Memory-hard thứ nhất, tham số N, r, p. Dùng trong Litecoin.
  • PBKDF2-HMAC-SHA256: Chỉ time-hard (iteration count), không memory-hard. Chỉ dùng khi bắt buộc FIPS/legacy.

Tóm tắt lựa chọn (2024)

  • General crypto hash: SHA-256 (mặc định), BLAKE3 (hiệu năng cao, XOF), SHAKE256 (cần XOF/domain separation).
  • Password: Argon2id (mặc định), bcrypt (tương thích).
  • Checksum non-crypto: xxHash64 / XXH3 (siêu nhanh), CRC32C (hardware accelerated).
  • Legacy migration: SHA-1 → SHA-256; MD5 → SHA-256/BLAKE3.