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

CBC (Cipher Block Chaining) trong bảo mật mạng là gì?

CBC - Cipher Block Chaining (Chuỗi khối mật mã)

CBC là một chế độ hoạt động (mode of operation) của block cipher (như AES, DES), biến block cipher thành stream cipher để mã hóa dữ liệu dài bất kỳ.

Cơ chế hoạt động CBC

  1. Plaintext chia thành các block cố định (128-bit cho AES)
  2. Block đầu tiên: XOR với Initialization Vector (IV) ngẫu nhiên → mã hóa
  3. Block tiếp theo: XOR với ciphertext block trước đó → mã hóa
  4. Ciphertext = IV + các block đã mã hóa

Công thức: Ci = Ek(Pi ⊕ Ci-1), với C0 = IV

Tại sao CBC an toàn hơn ECB?

Đặc điểmECB (Electronic Codebook)CBC (Cipher Block Chaining)
Block giống nhauRa ciphertext giống nhau → lộ patternRa ciphertext KHÁC nhau nhờ IV + chaining
IVKhông dùng IVBắt buộc IV ngẫu nhiên, duy nhất mỗi lần mã hóa
Parallel encryptionCó (độc lập)Không (phụ thuộc block trước)
Parallel decryptionCóCÓ (chỉ cần ciphertext trước)
Error propagation1 block lỗi → 1 block plaintext lỗi1 block lỗi → 2 block plaintext lỗi

Yêu cầu bảo mật CBC

  • IV phải ngẫu nhiên (random) hoặc unpredictable - không được dùng IV cố định hoặc counter
  • IV không cần bí mật (có thể truyền công khai cùng ciphertext)
  • Không reuse IV với cùng khóa (key) - dẫn đến vỡ bảo mật (two-time pad)
  • Padding: PKCS#7 chuẩn, nhưng dễ bị Padding Oracle Attack (POODLE, Lucky Thirteen)

AES-CBC trong thực tế

  • TLS 1.0/1.1/1.2 (cipher suite: TLS_AES_128_CBC_SHA, TLS_AES_256_CBC_SHA)
  • IPsec ESP, SSH, OpenVPN, S/MIME, PGP
  • File encryption: BitLocker (AES-CBC 128/256), FileVault 2, LUKS

Vấn đề bảo mật CBC & Giải pháp hiện đại

Khuyến nghị hiện nay

Ưu tiên AEAD (Authenticated Encryption with Associated Data):

  • AES-GCM: Hiệu năng cao, hardware acceleration (AES-NI), chuẩn TLS 1.3
  • ChaCha20-Poly1305: Nhanh trên phần mềm, không side-channel timing
  • AES-CCM: Cho constrained device (IoT)

Chỉ dùng AES-CBC khi: hệ thống legacy, bắt buộc tuân thủ tiêu chuẩn cũ, hoặc kết hợp HMAC đúng cách (Encrypt-then-MAC).

CBC-MAC & CMAC

Biến thể CBC để tạo Message Authentication Code (MAC):

  • CBC-MAC: Chỉ an toàn cho message độ dài cố định
  • CMAC (NIST SP 800-38B): An toàn độ dài biến đổi, dùng AES/3DES
  • Ứng dụng: TLS 1.2 (AES-CBC + HMAC), IPsec, 802.11i (CCMP dùng AES-CCM, không CBC-MAC)

Tóm tắt

CBC là chế độ block cipher quan trọng lịch sử, nhưng không khuyến khích cho hệ thống mới do rủi ro padding oracle, thiếu integrity. Nên dùng AES-GCM hoặc ChaCha20-Poly1305 (AEAD).

Vấn đềMô tảGiải pháp
Padding OracleTấn công side-channel qua lỗi padding → giải mã ciphertextDùng AEAD (GCM, CCM), hoặc constant-time padding check
No IntegrityCBC chỉ cung cấp confidentiality, KHÔNG authenticityKết hợp HMAC (Encrypt-then-MAC) hoặc dùng AEAD
IV predictableSSL/TLS 1.0 dùng IV = last ciphertext block → BEAST attackTLS 1.1+ explicit IV, TLS 1.3 loại bỏ CBC
Bit-flippingSửa ciphertext → sửa plaintext dự đoán được (nếu biết format)AEAD cung cấp integrity