Hướng Dẫn Mã Hóa Nâng Cao: AES, RSA, ECC & Mật Mã Hậu Lượng Tử

Hướng dẫn toàn diện này khám phá các khái niệm, thuật toán và giao thức mã hóa nâng cao được sử dụng trong các hệ thống truyền thông bảo mật hiện đại. Lý tưởng cho các developer và chuyên gia bảo mật.

Lưu ý: Hướng dẫn này giả định bạn đã quen thuộc với các khái niệm mã hóa cơ bản. Nếu bạn mới bắt đầu, hãy xem Mẹo Bảo Mật Cho Người Mới Bắt Đầu.

Thuật Toán Mã Hóa Đối Xứng

AES (Advanced Encryption Standard)

Tiêu chuẩn vàng cho mã hóa đối xứng, được chính phủ Hoa Kỳ áp dụng vào năm 2001.

Tính Năng Chính

  • Kích thước key: 128, 192, hoặc 256 bits
  • Kích thước block: 128 bits
  • Số vòng: 10, 12, hoặc 14 tùy thuộc vào kích thước key
  • Hiệu năng: Được tối ưu hóa cao, có sẵn tăng tốc phần cứng

Các Mode Phổ Biến

  • GCM (Galois/Counter Mode): Mã hóa xác thực, được khuyến nghị cho hầu hết các trường hợp
  • CBC (Cipher Block Chaining): Mode truyền thống, yêu cầu MAC riêng
  • CTR (Counter): Có thể song song hóa, được sử dụng trong một số giao thức

ChaCha20

Stream cipher hiện đại được thiết kế bởi Daniel J. Bernstein, ngày càng phổ biến như một giải pháp thay thế AES.

Ưu Điểm

  • Nhanh hơn AES trên các thiết bị không có tăng tốc phần cứng
  • Triển khai constant-time (chống lại timing attacks)
  • Thiết kế đơn giản, dễ triển khai an toàn hơn
  • Sử dụng với Poly1305 cho mã hóa xác thực

Mã Hóa Bất Đối Xứng

RSA (Rivest-Shamir-Adleman)

Được sử dụng rộng rãi cho trao đổi key và chữ ký số.

Các Cân Nhắc Về Key

  • Kích thước key tối thiểu: 2048 bits (khuyến nghị 4096 bits cho bảo mật dài hạn)
  • Hiệu năng: Tốn kém về mặt tính toán so với mã hóa đối xứng
  • Padding schemes: Sử dụng OAEP cho mã hóa, PSS cho chữ ký
  • Mối đe dọa lượng tử: Dễ bị tổn thương trước máy tính lượng tử (thuật toán Shor)

Elliptic Curve Cryptography (ECC)

Giải pháp thay thế hiệu quả hơn cho RSA với bảo mật tương đương ở kích thước key nhỏ hơn.

Các Đường Cong Phổ Biến

  • Curve25519: Được thiết kế cho trao đổi key ECDH, được áp dụng rộng rãi
  • Ed25519: Cho chữ ký số, được sử dụng trong SSH, GPG
  • P-256 (secp256r1): Tiêu chuẩn NIST, được hỗ trợ rộng rãi
  • P-384, P-521: Mức độ bảo mật cao hơn

Ưu Điểm So Với RSA

  • ECC 256-bit ≈ bảo mật RSA 3072-bit
  • Tính toán nhanh hơn
  • Key và chữ ký nhỏ hơn
  • Yêu cầu băng thông và lưu trữ thấp hơn

Giao Thức Trao Đổi Key

Diffie-Hellman (DH)

Cho phép hai bên thiết lập một bí mật chung qua kênh không an toàn.

Các Biến Thể

  • Classic DH: Triển khai gốc
  • ECDH: Phiên bản Elliptic Curve (hiệu quả hơn)
  • X25519: ECDH hiện đại sử dụng Curve25519

Perfect Forward Secrecy (PFS)

Đảm bảo các thông tin liên lạc trong quá khứ vẫn an toàn ngay cả khi các key dài hạn bị xâm phạm.

Triển Khai

  • Tạo các cặp key tạm thời cho mỗi phiên
  • Hủy các session key sau khi sử dụng
  • Được sử dụng trong TLS 1.3, Signal Protocol, v.v.

Hàm Hash

Họ SHA-2

  • SHA-256: Đầu ra 256-bit, được sử dụng rộng rãi
  • SHA-384, SHA-512: Mức độ bảo mật cao hơn
  • Ứng dụng: Chữ ký số, xác thực chứng chỉ, hash mật khẩu (với kỹ thuật phù hợp)

SHA-3 (Keccak)

  • Cấu trúc khác với SHA-2 (hàm sponge)
  • Chống lại các cuộc tấn công mở rộng độ dài
  • Phù hợp cho các ứng dụng yêu cầu biên độ bảo mật cao

BLAKE2/BLAKE3

  • Nhanh hơn SHA-2 và SHA-3
  • An toàn mật mã học
  • BLAKE3: Có thể song song hóa cao, tuyệt vời cho dữ liệu lớn

Key Derivation Functions (KDFs)

PBKDF2 (Password-Based Key Derivation Function 2)

  • Mục đích: Tạo các key mật mã từ mật khẩu
  • Số lần lặp: Tối thiểu 100.000 (khuyến nghị của OWASP)
  • Trường hợp sử dụng: Lưu trữ mật khẩu, tạo key

Argon2

Người chiến thắng của Password Hashing Competition (2015), được khuyến nghị cho các ứng dụng mới.

Các Biến Thể

  • Argon2id: Hybrid (được khuyến nghị cho hầu hết các trường hợp)
  • Argon2i: Được tối ưu hóa chống lại side-channel attacks
  • Argon2d: Khả năng chống lại GPU attacks tối đa

scrypt

  • Hàm memory-hard (chống lại hardware attacks)
  • Được sử dụng bởi Litecoin, Tarsnap
  • Cân bằng tốt giữa bảo mật và khả năng tương thích

Message Authentication Codes (MACs)

HMAC (Hash-based MAC)

  • Kết hợp hàm hash với key bí mật
  • Cung cấp xác thực và tính toàn vẹn
  • Phổ biến: HMAC-SHA256, HMAC-SHA512

Poly1305

  • Authenticator một lần
  • Sử dụng với ChaCha20 cho mã hóa xác thực
  • Nhanh và constant-time

Authenticated Encryption

Tại Sao Nó Quan Trọng

Chỉ mã hóa không đảm bảo tính toàn vẹn. Kẻ tấn công có thể sửa đổi ciphertext mà không bị phát hiện. Authenticated encryption giải quyết vấn đề này.

AEAD (Authenticated Encryption with Associated Data)

  • AES-GCM: Được hỗ trợ rộng rãi nhất
  • ChaCha20-Poly1305: Tốt hơn trên thiết bị di động
  • AES-CCM: Được sử dụng trong một số giao thức không dây

Chữ Ký Số

RSA Signatures

  • Padding: Sử dụng PSS (Probabilistic Signature Scheme)
  • Hàm hash: SHA-256 hoặc cao hơn
  • Kích thước key: Tối thiểu 2048 bits

ECDSA (Elliptic Curve Digital Signature Algorithm)

  • Chữ ký nhỏ hơn RSA
  • Yêu cầu tạo nonce cẩn thận (RNG yếu = key bị xâm phạm)
  • Khuyến nghị biến thể xác định (RFC 6979)

Ed25519

  • Xác định (không cần RNG)
  • Tạo và xác minh chữ ký nhanh
  • Chữ ký nhỏ (64 bytes)
  • Chống lại side-channel attacks

Các Giao Thức Hiện Đại

Signal Protocol

Giao thức mã hóa end-to-end tiên tiến được sử dụng bởi Signal, WhatsApp, Facebook Messenger.

Tính Năng Chính

  • Double Ratchet: Liên tục cập nhật key
  • Perfect Forward Secrecy: Tin nhắn trong quá khứ vẫn an toàn
  • Post-Compromise Security: Phục hồi sau khi key bị xâm phạm
  • Asynchronous: Hoạt động ngay cả khi người nhận offline

TLS 1.3

Phiên bản mới nhất của giao thức Transport Layer Security.

Cải Tiến

  • Loại bỏ các thuật toán và cipher suite yếu
  • Luôn cung cấp forward secrecy
  • Handshake nhanh hơn (1-RTT, tùy chọn 0-RTT)
  • Server Hello được mã hóa

Noise Protocol Framework

Framework giao thức mật mã hiện đại để xây dựng các hệ thống truyền thông bảo mật.

Ứng Dụng

  • WireGuard VPN
  • Lightning Network
  • I2P messaging

Post-Quantum Cryptography

Mối Đe Dọa

Máy tính lượng tử có thể phá vỡ RSA và ECC bằng thuật toán Shor. Các thuật toán đối xứng ít bị ảnh hưởng hơn nhưng yêu cầu key lớn hơn.

Các Ứng Viên Post-Quantum Của NIST

  • Kyber: Key encapsulation dựa trên lattice
  • Dilithium: Chữ ký số dựa trên lattice
  • SPHINCS+: Chữ ký dựa trên hash

Chiến Lược Chuyển Đổi

  • Phương pháp hybrid: Kết hợp thuật toán cổ điển và post-quantum
  • Tăng kích thước key đối xứng lên 256 bits
  • Theo dõi quá trình tiêu chuẩn hóa của NIST
  • Lập kế hoạch cho tính linh hoạt của thuật toán

Best Practices Triển Khai

Đừng Tự Tạo Crypto Của Riêng Bạn

Sử dụng các thư viện đã được thiết lập và đánh giá ngang hàng:

  • libsodium: Cấp cao, dễ sử dụng
  • OpenSSL: Toàn diện, được hỗ trợ rộng rãi
  • BoringSSL: Fork OpenSSL của Google
  • Ring: Thư viện cryptography của Rust

Quản Lý Key

  • Sử dụng hardware security modules (HSMs) cho các key quan trọng
  • Triển khai chính sách luân chuyển key
  • Không bao giờ hardcode key trong source code
  • Sử dụng key derivation cho nhiều mục đích
  • Xóa an toàn key khỏi bộ nhớ sau khi sử dụng

Tạo Số Ngẫu Nhiên An Toàn

  • Sử dụng RNG an toàn mật mã (CSPRNG)
  • Không bao giờ sử dụng hàm rand() tiêu chuẩn
  • RNG của hệ điều hành: /dev/urandom (Linux), CryptGenRandom (Windows)
  • Theo ngôn ngữ cụ thể: crypto.randomBytes (Node.js), module secrets (Python)

Phòng Chống Timing Attack

  • Sử dụng so sánh constant-time cho các bí mật
  • Tránh phân nhánh dựa trên dữ liệu bí mật
  • Lưu ý về cache timing attacks
  • Sử dụng các thư viện được thiết kế với khả năng chống timing attack

Kiểm Tra Và Xác Thực

Kiểm Toán Bảo Mật

  • Penetration testing thường xuyên
  • Code review bởi các chuyên gia bảo mật
  • Kiểm toán bảo mật bên thứ ba
  • Chương trình bug bounty

Tuân Thủ

  • FIPS 140-2/3: Tiêu chuẩn chính phủ Hoa Kỳ
  • Common Criteria: Chứng nhận bảo mật quốc tế
  • PCI DSS: Yêu cầu của ngành thẻ thanh toán

Tài Nguyên Để Học Thêm

Sách

  • "Cryptography Engineering" của Ferguson, Schneier, và Kohno
  • "Serious Cryptography" của Jean-Philippe Aumasson
  • "Applied Cryptography" của Bruce Schneier

Tài Nguyên Trực Tuyến

  • Cryptopals Crypto Challenges
  • Khóa học Cryptography của Stanford (Coursera)
  • IACR ePrint Archive
  • Crypto Stack Exchange
Xem mã hóa trong thực tế: SecretNote sử dụng mã hóa AES-256-GCM với key derivation an toàn để bảo vệ tin nhắn của bạn. Thử ngay bây giờ!