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

Khác biệt giữa Hashing và Encryption trong An ninh Thông tin

Hai công cụ mật mã cơ bản, mục tiêu và thuộc tính hoàn toàn khác biệt.

Bảng so sánh cốt lõi

Tiêu chíHashing (Hàm băm)Encryption (Mã hóa)
Tính chấtMột chiều (One-way) — không đảo ngượcHai chiều (Two-way) — có giải mã
KhóaKhông khóa (unkeyed) — hoặc keyed (HMAC)Bắt buộc có khóa (Symmetric K hoặc Asymmetric PK/SK)
Đầu raCố định độ dài (256-bit SHA-256...)Cùng độ dài plaintext (+ padding, tag, IV)
Mục đích chínhToàn vẹn (Integrity), Fingerprint, CommitmentBảo mật (Confidentiality), Che giấu nội dung
Xác thựcChỉ khi kết hợp khóa (HMAC) hoặc chữ ký sốBuilt-in (AEAD) hoặc kết hợp MAC
Non-repudiationChỉ với chữ ký số (ký hash)Chỉ với chữ ký số (asymmetric)
DeterministicCùng input → cùng output (trừ salt/randomized hashing)Probabilistic (cần IV/nonce random) → khác nhau mỗi lần
Ví dụSHA-256, SHA-3, BLAKE3, Argon2id (KDF)AES-GCM, ChaCha20-Poly1305, RSA-OAEP, X25519

Khi nào dùng cái nào?

Dùng Hashing khi:

  • Kiểm tra toàn vẹn tệp (checksum, git, blockchain, download verification).
  • Lưu trữ mật khẩu → Password Hashing KDF (Argon2id, bcrypt) — không phải hash nhanh.
  • Chữ ký số: Ký H(M) thay vì M.
  • MAC: HMAC(K, M) = H((K⊕opad)||H((K⊕ipad)||M)).
  • KDF: HKDF, PBKDF2 dẫn xuất khóa từ secret.
  • Commitment scheme: Commit = H(r||m).
  • Data structure: Hash table, Bloom filter, Merkle tree (non-crypto: xxHash, SipHash).

Dùng Encryption khi:

  • Bảo vệ nội dung tin nhắn, tệp, database, disk — cần đọc lại sau.
  • Truyền tải qua mạng không tin cậy (TLS, SSH, WireGuard, Signal).
  • Key exchange (KEM): RSA-OAEP, ECIES, Kyber encapsulate symmetric key.
  • Envelope encryption: DEK mã hóa data, KEK (trong KMS/HSM) mã hóa DEK.
  • Searchable encryption / FHE (niche, nghiên cứu).

Kết hợp Hashing + Encryption (Best Practice)

  1. Encrypt-then-MAC (EtM): C = Enc(Kₑ, P); T = MAC(Kₘ, C); gửi (C, T). Verify T trước khi decrypt. An toàn nếu MAC strong.
  2. AEAD (Auth Encryption with Associated Data): AES-GCM, ChaCha20-Poly1305 — tích hợp enc + auth, chuẩn hóa, khuyên dùng nhất.
  3. Hybrid: KEM + DEM: KEM(PK) → K_sym; DEM(K_sym) → AEAD encrypt data.
  4. Digital Signature: Sign(SK, H(M)) — hash then sign.

Sai lầm thường gặp

  • Dùng SHA-256 "mã hóa" mật khẩu → SAI (nhanh, không salt, rainbow table). Phải dùng Argon2id/bcrypt.
  • Dùng AES-ECB → SAI (lộ pattern). Phải dùng AES-GCM/CTR+MAC.
  • Dùng cùng IV/nonce cho nhiều lần mã hóa (CTR/GCM/ChaCha20) → PHÁ VỠ HOÀN TOÀN.
  • Tự thiết kế protocol crypto → RỦI RO CAO. Dùng TLS 1.3, HPKE, Signal, age, libsodium, Tink.