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

Message Authentication Code (MAC) trong an ninh mạng: Nguyên lý và ứng dụng

Message Authentication Code (MAC) là gì?

MAC (Message Authentication Code) – còn gọi là Keyed Hash Function – là một đoạn mã (tag) ngắn được sinh ra từ thông điệp (message) và khóa bí mật chung (secret key) bằng thuật toán mật mã đối xứng. MAC đảm bảo 2 thuộc tính:

  • Integrity (Toàn vẹn): Thông điệp không bị thay đổi trên đường truyền.
  • Authenticity (Xác thực nguồn gốc): Chỉ người nắm khóa bí mật mới tạo được MAC hợp lệ.

Khác biệt: MAC vs Hash vs Chữ ký số (Digital Signature)

Đặc điểmMAC (HMAC, CMAC, GMAC...)Cryptographic Hash (SHA-256, SHA-3)Digital Signature (RSA/ECDSA/EdDSA)
KhóaĐối xứng (Secret Key - cùng 1 khóa)Không có khóa (Public)Bất đối xứng (Private Key ký, Public Key verify)
Chức năngIntegrity + AuthenticityChỉ IntegrityIntegrity + Authenticity + Non-repudiation
Tốc độRất nhanhRất nhanhChậm hơn (công suất lớn)
Kích thước đầu raCố định (128-256 bit)Cố định (256/384/512 bit)Phụ thuộc khóa (256-512 bit)
Non-repudiationKhông (cả 2 bên nắm khóa)KhôngCó (chỉ người nắm private key mới ký được)

Các thuật toán MAC phổ biến

  • HMAC (Hash-based MAC): HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 (RFC 2104). Dùng hàm băm + khóa. Tiêu chuẩn TLS, IPsec, JWT, AWS SigV4.
  • CMAC (Cipher-based MAC): AES-CMAC, TDES-CMAC (NIST SP 800-38B). Dùng block cipher (AES).
  • GMAC (Galois MAC): Dùng trong AES-GCM (Authenticated Encryption). Hiệu năng cao, song song hóa tốt.
  • Poly1305: One-time authenticator, dùng với ChaCha20 (ChaCha20-Poly1305 – TLS 1.3, WireGuard).
  • SipHash: Hash table DoS protection, short input, nhanh (Rust, Python dict).

Quy trình tạo & Xác thực MAC

  1. Key Agreement: Hai bên thiết lập khóa bí mật chung (K) – qua TLS, Diffie-Hellman, KMS, hoặc pre-shared.
  2. Sender (Tạo MAC): tag = MAC_Algorithm(K, message). Gửi (message, tag).
  3. Receiver (Xác thực): Tính tag' = MAC_Algorithm(K, message). So sánh tag' == tag (constant-time comparison để chống timing attack). Khớp → chấp nhận.

Ứng dụng thực tế

Tấn công lên MAC & Phòng chống

  • Length Extension Attack: Tấn công HMAC(MD5/SHA1) nếu dùng sai cách (H(K||m)). Phòng: Dùng HMAC chuẩn (H(K⊕opad || H(K⊕ipad || m))) hoặc SHA-256/3.
  • Collision/Preimage Attack: Phá vỡ hàm băm nền. Phòng: Duyệt thuật toán mạnh (SHA-256/384/512, SHA-3, BLAKE2/3).
  • Key Recovery / Side-channel: Timing attack, power analysis. Phòng: Constant-time compare, HSM/TEE, key rotation.
  • Replay Attack: Gửi lại (message, tag) cũ. Phòng: Nonce/timestamp/sequence number trong message.
  • Forgery (ChữaMAC): Tạo tag hợp lệ không biết khóa. Phòng: Key length ≥ 128-bit, thuật toán an toàn (HMAC-SHA256, AES-GCM, Poly1305).

Lưu ý quan trọng

  • MAC không cung cấp Confidentiality (Bảo mật nội dung). Cần kết hợp Encryption (AES-GCM, ChaCha20-Poly1305 – AEAD) hoặc Encrypt-then-MAC.
  • Không dùng MAC thay thế Digital Signature khi cần Non-repudiation (chống chối cối).
  • Key Management: Sinh khóa ngẫu nhiên an toàn (CSPRNG), lưu trữ an toàn (HSM, KMS, Vault), xoay vòng (rotate) định kỳ.
Lĩnh vựcỨng dụng MAC
TLS/SSL (HTTPS)HMAC trong TLS 1.2 (HMAC-SHA256), AES-GCM/ChaCha20-Poly1305 trong TLS 1.3 (AEAD)
IPsec (VPN)HMAC-SHA256 (AH/ESP), AES-GCM (ESP)
SSHHMAC-SHA2-256/512, UMAC, HMAC-SHA1 (cũ)
JWT (JSON Web Token)HS256 (HMAC-SHA256), HS384, HS512 – JWS (JSON Web Signature)
AWS / Cloud APIAWS Signature Version 4 (HMAC-SHA256) ký request
Payment (EMV, 3-D Secure)MAC (ISO 9797-1) xác thực giao dịch thẻ/chip
Secure MessagingSignal Protocol (HMAC-SHA256), WhatsApp, Telegram MTProto
File IntegrityTripwire, AIDE, RPM/DPKG verify (HMAC/SHA256)