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

Mã hóa đối xứng (Symmetric Encryption) trong bảo mật mạng: Nguyên lý, thuật toán và so sánh

Mã hóa đối xứng (Symmetric Encryption) là gì?

Mã hóa đối xứng (Symmetric Encryption / Secret Key Encryption) là phương pháp mật mã học sử dụng một khóa duy nhất (secret key) cho cả hai quá trình mã hóa (encryption) và giải mã (decryption). Cả người gửi và người nhận phải nắm giữ cùng một khóa bí mật này.

Nguyên lý hoạt động

Plaintext + Key + Algorithm → Ciphertext
Ciphertext + Key + Algorithm → Plaintext
  • Khóa bí mật (Secret Key): Chuỗi bit ngẫu nhiên (128-bit, 192-bit, 256-bit).
  • Thuật toán: AES, ChaCha20, 3DES (đã lỗi thời), v.v.
  • Chế độ hoạt động (Mode of Operation): ECB (không an toàn), CBC, CTR, GCM (khuyên dùng - cung cấp AEAD).

Các thuật toán đối xứng phổ biến

Thuật toánKích thước khóaKích thước blockTrạng tháiỨng dụng điển hình
AES (Advanced Encryption Standard)128, 192, 256-bit128-bitTiêu chuẩn vàng, an toànTLS 1.2/1.3, VPN, Disk encryption (BitLocker, FileVault, LUKS), ZIP/7z, SSH
ChaCha20256-bitStream (512-bit block)An toàn, nhanh trên CPU không có AES-NITLS 1.3, WireGuard, SSH, QUIC, WireGuard
AES-GCM / ChaCha20-Poly1305128/256-bit128-bit / StreamAEAD (Authenticated Encryption)TLS 1.2/1.3, IPsec, SRTP, Kubernetes secrets
3DES (Triple DES)168-bit (effect 112-bit)64-bitĐã ngừng dùng (Deprecated) - Sweet32 attack, chậmHệ thống legacy, PCI-DSS cũ (bắt buộc loại bỏ)
RC440-2048-bitStreamPhá vỡ hoàn toàn (Broken)Cấm dùng (TLS, WPA, PDF)
Blowfish/Twofish32-448-bit / 128-256-bit64-bit / 128-bitKhông khuyến nghị cho hệ mớiMột số phần mềm cũ (OpenVPN legacy, bcrypt dùng Blowfish)

So sánh: Đối xứng vs Bất đối xứng (Asymmetric)

Tiêu chíMã hóa đối xứngMã hóa bất đối xứng (RSA, ECC, ElGamal)
Số khóa1 khóa chung (shared secret)Cặp khóa: Public Key (mã hóa) + Private Key (giải mã)
Tốc độRất nhanh (GB/s trên CPU hiện đại)Chậm (KB-MB/s), tốn tài nguyên CPU
Kích thước khóa tương đương an toànAES-128 ≈ RSA-3072 ≈ ECC-256RSA-2048 ≈ AES-112 (yếu), RSA-3072 ≈ AES-128
Vấn đề chínhTrao đổi khóa an toàn (Key Exchange)Hiệu năng, kích thước ciphertext lớn
Ứng dụng chínhMã hóa dữ liệu lớn (bulk encryption)Trao đổi khóa, chữ ký số, xác thực, PKI

Kết hợp hai loại: Hybrid Encryption (Best Practice)

Hầu hết các hệ thống hiện đại (TLS, SSH, PGP, Signal, Age) dùng Kết hợp (Hybrid):

  1. Dùng bất đối xứng (ECDH, X25519, RSA-KEM) để trao đổi/khởi tạo khóa phiên (session key) an toàn.
  2. Dùng đối xứng (AES-GCM, ChaCha20-Poly1305) với khóa phiên để mã hóa dữ liệu thực tế.
TLS 1.3 Handshake:
ClientHello + Key Share (X25519) → ServerHello + Key Share → Shared Secret (ECDH)
→ HKDF-Extract/Expand → Traffic Keys (AES-256-GCM / ChaCha20-Poly1305)
→ Application Data encrypted with Symmetric Keys

Ví dụ thực tế

  • HTTPS (TLS 1.3): ECDHE (key exchange) + AES-256-GCM / ChaCha20-Poly1305 (record encryption).
  • VPN (WireGuard): Curve25519 (key exchange) + ChaCha20-Poly1305 (transport encryption).
  • Mã hóa ổ đĩa (BitLocker/LUKS/FileVault): AES-XTS / AES-CBC + PBKDF2/Argon2 từ passphrase.
  • Kubernetes Secrets: Envelope encryption: DEK (AES-GCM) được mã hóa bằng KEK (KMS - Cloud KMS/HSM).
  • SSH: Diffie-Hellman (key exchange) + AES-CTR / ChaCha20-Poly1305 (session encryption).

Thách thức & Best Practices

1. Trao đổi khóa (Key Distribution)

  • Không bao giờ gửi khóa qua kênh không an toàn (email, chat, Git).
  • Dùng: Diffie-Hellman (ECDHE/X25519), KEM, PAKE (SPAKE2, OPAQUE), hoặc kênh out-of-band (QR code, NFC).

2. Quản lý khóa (Key Management)

  • Xoay khóa (Key Rotation) định kỳ: 90 ngày - 1 năm tùy mức độ rủi ro.
  • Tách khóa theo mục đích: Khóa mã hóa dữ liệu (DEK) ≠ Khóa mã hóa khóa (KEK) ≠ Khóa ký (Signing Key).
  • Lưu khóa trong HSM, Cloud KMS (AWS KMS, Azure Key Vault, GCP KMS, HashiCorp Vault).

3. Chế độ hoạt động (Mode) - Quan trọng!

  • KHÔNG BAO GIỜ dùng ECB - lộ pattern dữ liệu.
  • Dùng AES-GCM hoặc ChaCha20-Poly1305 (AEAD - cung cấp cả mã hóa và xác thực).
  • Nếu buộc dùng CBC: phải dùng HMAC riêng (Encrypt-then-MAC) và IV ngẫu nhiên duy nhất mỗi lần mã hóa.
  • Nonce/IV: Không bao giờ tái sử dụng (nonce reuse = catastrophic failure cho GCM/ChaCha20).

4. Kiểm tra toàn vẹn & Xác thực (Integrity & Authenticity)

Mã hóa đối xứng không tự động đảm bảo toàn vẹn (trừ AEAD). Luôn dùng AEAD hoặc kết hợp HMAC (Encrypt-then-MAC).