MAC (Message Authentication Code) là thẻ xác thực được tạo từ thông điệp M và khóa bí mật K qua hàm MAC = F(K, M). Người nhận xác thực bằng cách tính lại và so sánh. MAC cung cấp toàn vẹn và xác thực nguồn gốc, nhưng không cung cấp non-repudiation (do khóa đối xứng).
Ba thuật toán cốt lõi
- Key Generation: Sinh khóa K ngẫu nhiên an toàn.
- Signing (Tagging): T = MAC(K, M).
- Verification: Xác nhận T' == MAC(K, M). Trả về accepted hoặc rejected.
Yêu cầu bảo mật formald (theo Bellare, Canetti, Krawczyk)
- Unforgeability (Không làm giả được): Kẻ quan sát (M, T) không thể tạo (M', T') hợp lệ với M' ≠ M. Xác suất thành công ≤ 2⁻ⁿ (n = độ dài tag).
- Uniform distribution (Phân bố đều): Với M ngẫu nhiên, MAC(K, M) phân bố đều trên không gian tag.
- Key separation / Related-key resistance: Biết MAC(K, M) không cho phép suy ra MAC(K', M) với K' liên quan.
- Efficiency: Tính toán nhanh, phù hợp luồng dữ liệu tốc độ cao.
Yêu cầu thực triển (Deployment requirements)
- Quản lý khóa: Sinh, phân phối, lưu trữ, xoay vòng (rotation), thu hồi khóa an toàn (HSM, KMS).
- Chống replay: Kết hợp nonce/timestamp/sequence number vào M trước khi MAC.
- Chống truncation/extension: MAC phải gắn liền với độ dài/cấu trúc M (dùng domain separation).
- Algorithm agility: Hỗ trợ chuyển thuật toán (HMAC-SHA256 → HMAC-SHA3) mà không phá vỡ hệ thống.
- Side-channel resistance: Triển khai constant-time để chống timing attack.
Ứng dụng điển hình
- Giao dịch tài chính (ISO 8583, EMV).
- TLS 1.2 (HMAC), TLS 1.3 (AEAD: AES-GCM, ChaCha20-Poly1305).
- IPsec (HMAC, AES-GCM), JWT (HS256/HS512).
- Lưu trữ an toàn: xác thực metadata, backup.
Lưu ý: Không tự thiết kế MAC. Dùng chuẩn đã kiểm chứng: HMAC-SHA256/512 (RFC 2104), KMAC (SHA-3), AES-CMAC (NIST SP 800-38B), Poly1305 (RFC 8439).