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

SHA (Secure Hash Algorithm) trong An ninh Thông tin

SHA (Secure Hash Algorithm) là họ tiêu chuẩn hàm băm mật mã do NIST/NSA thiết kế, chuẩn hóa qua FIPS. Phân hệ chính: SHA-1 (legacy, broken), SHA-2 (tiêu chuẩn hiện tại), SHA-3 (dự phòng, thiết kế khác).

Họ SHA-2 (FIPS 180-4) — Tiêu chuẩn vàng hiện tại

Thuật toánOutputBlockWordRoundsDùng cho
SHA-224224-bit512-bit32-bit64Truncated SHA-256, compatibility
SHA-256256-bit512-bit32-bit64Mặc định chung (TLS, Bitcoin, Git, JWT, cert)
SHA-384384-bit1024-bit64-bit80Truncated SHA-512, 192-bit security
SHA-512512-bit1024-bit64-bit80Nhanh trên 64-bit, high security
SHA-512/224224-bit1024-bit64-bit80Chống length extension, 112-bit security
SHA-512/256256-bit1024-bit64-bit80Chống length extension, 128-bit security

SHA-3 Family (FIPS 202) — Keccak Sponge Construction

  • NIST SHA-3 Competition winner (2012) — Keccak team (Bertoni, Daemen, Peeters, Van Assche).
  • Khác Merkle-Damgård: Sponge construction — State = rate (r) + capacity (c) = 1600-bit.
  • Permutation Keccak-f[1600] (24 vòng) — ARX-like (AND, XOR, ROT, NOT).
  • Absorb: XOR r-bit block → permute.
  • Squeeze: Output r-bit → permute nếu cần thêm.
  • Tự nhiên chống length extension attack. Hỗ trợ XOF (SHAKE128/256) — output tùy ý độ dài.
Thuật toánOutputRate (r)Capacity (c)Security
SHA3-224224-bit1152448112-bit
SHA3-256256-bit1088512128-bit
SHA3-384384-bit832768192-bit
SHA3-512512-bit5761024256-bit
SHAKE128Tuỳ ý (XOF)1344256128-bit
SHAKE256Tuỳ ý (XOF)1088512256-bit

SHA-1 (FIPS 180-1, 1995) — ĐÃ PHÁ VỠ

  • 160-bit output, 512-bit block, 80 rounds, Merkle-Damgård.
  • Collision attack: SHAttered (Google/CWI, 2017) — 2⁶³.¹ operations, 110 GPU-year. Thực tế.
  • Chosen-prefix collision: 2019 (Gaëtan Leurent, Thomas Peyrin).
  • Cấm: TLS certificate (2017), Git (migrate SHA-256), code signing, blockchain mới.
  • HMAC-SHA1: Vẫn chấp nhận được (HMAC proof không yêu cầu collision resistance) nhưng deprecated, nên chuyển HMAC-SHA256.

Ứng dụng quan trọng: TLS Certificate & PKI

  • X.509 Certificate: Signature = Sign(CA_SK, TBSCertificate) — TBSCertificate hash bằng SHA-256 (bắt buộc từ 2016).
  • Certificate Transparency (CT): Log entry = Merkle tree leaf = SHA-256(certificate).
  • TLS 1.3: HKDF-SHA256 cho key derivation, Finished message = HMAC-SHA256(handshake_hash).

So sánh SHA-2 vs SHA-3 vs BLAKE3 (2024)

Tiêu chíSHA-256SHA3-256BLAKE3
ConstructionMerkle-DamgårdSpongeTree (BLAKE2-based)
Speed (SW, 1 core)~0.5 cpb (HW accel: 0.06)~1.5-2 cpb~1-2 cpb (SIMD, parallel)
Length extensionCó (trừ truncated)KhôngKhông
XOF / Variable outputKhông (cần SHAKE)SHAKE256 (XOF)Có (native XOF)
Domain separationManual (prefix)SHAKE customizationBuilt-in (key, context)
StandardizationFIPS 180-4 (ubiquitous)FIPS 202IETF RFC (draft), không FIPS
PQC readinessTốt (SHA-256 trong Dilithium)Tốt (SHAKE256 trong Dilithium/Kyber)Chưa chuẩn PQC

Khuyến nghị lựa chọn (2024)

  1. Mặc định mọi thứ: SHA-256 (hoặc SHA-512 trên 64-bit). Phổ biến, hardware accel, an toàn, FIPS.
  2. Cần XOF / Domain separation dễ dàng / Chống length extension: SHAKE256 (NIST standard) hoặc BLAKE3 (performance).
  3. Cryptographic agility (đa dạng hóa): Hỗ trợ cả SHA-256 và SHA3-256/SHAKE256 trong code.
  4. Password hashing: KHÔNG dùng SHA-256 trực tiếp. Dùng Argon2id, bcrypt, scrypt, PBKDF2-HMAC-SHA256.
  5. Checksum non-crypto (speed): xxHash (XXH3), BLAKE3, CRC32C (HW accel).

Lưu ý: SHA không phải encryption. Không "giải mã SHA". Dùng đúng chỗ: Integrity, Authentication (HMAC), KDF, Signature, Commitment, Blockchain. Không dùng cho Confidentiality.