Đối xứng (Symmetric) — Mã hóa dữ liệu lớn
| Thuật toán | Kích thước khối/khóa | Đặc điểm | Trạng thái |
|---|---|---|---|
| AES (Rijndael) | 128-bit block, 128/192/256-bit key | Tiêu chuẩn NIST (FIPS 197), AES-NI hardware, 10/12/14 vòng, SPN | Khuyên dùng #1 |
| ChaCha20-Poly1305 | Stream (256-bit key, 96-bit nonce) | ARX, nhanh phần mềm, constant-time tự nhiên, RFC 8439, TLS 1.3 | Khuyên dùng #2 (nếu không AES-NI) |
| AES-GCM / ChaCha20-Poly1305 | AEAD (Authenticated Encryption) | Mã hóa + xác thực cùng lúc, nonce duy nhất bắt buộc | Chế độ bắt buộc cho symmetric |
| Twofish | 128-bit block, 256-bit key | Feistel-like, MDS, pre-computed key-dependent S-box, không patent | An toàn, ít dùng hơn AES |
| Camellia | 128-bit block, 128/192/256-bit key | Feistel 18/24 vòng, tiêu chuẩn ISO/IEC 18033-3, Nhật/Ảo | An toàn, tùy chọn TLS |
| 3DES (TDEA) | 64-bit block, 112/168-bit key | 3 lần DES, chậm, block nhỏ (birthday bound 2³²), deprecated NIST 2023 | Cấm dùng mới, chỉ legacy |
| Blowfish | 64-bit block, 32-448-bit key | Key schedule chậm, block nhỏ, successor là Twofish | Legacy, không khuyên dùng |
Bất đối xứng (Asymmetric) — Key Exchange, Chữ ký, KEM
| Thuật toán | Loại | Kích thước khóa | Dùng cho | Trạng thái |
|---|---|---|---|---|
| RSA | Integer Factorization | 2048/3072/4096-bit | KEM (RSA-OAEP), Chữ ký (RSA-PSS), Cert | Vẫn dùng rộng rãi, chậm, key lớn |
| ECC (ECDH/ECDSA/EdDSA) | Elliptic Curve DLP | P-256, P-384, Curve25519, Ed25519 | KEM (ECDH), Chữ ký (ECDSA/Ed25519), TLS 1.3 | Tiêu chuẩn hiện tại (nhỏ, nhanh) |
| X25519 / Ed25519 | Curve25519 (Montgomery/Edwards) | 256-bit | ECDH key exchange, EdDSA signature | Khuyên dùng #1 cho ECC |
| Kyber (ML-KEM) | Module-LWE (Lattice) | 512/768/1024 (Kem) | Post-Quantum KEM (NIST PQC Standard 2024) | Chuẩn bị triển khai PQC |
| Dilithium (ML-DSA) | Module-LWE/LWR | 256/384/512 | Post-Quantum Signature (NIST PQC 2024) | Chuẩn bị triển khai PQC |
Hybrid Encryption (Thực tế)
HPKE (RFC 9180) = KEM (X25519/Kyber) + KDF (HKDF-SHA256) + AEAD (AES-GCM/ChaCha20-Poly1305). Dùng trong TLS 1.3, MLS, Signal, age, rage.
Lựa chọn khuyến nghị (2024)
- Mã hóa dữ liệu (symmetric): AES-256-GCM (có AES-NI) hoặc ChaCha20-Poly1305 / XChaCha20-Poly1305.
- Key exchange: X25519 (classical) + Kyber-768 (PQC hybrid) — hybrid KEM.
- Chữ ký số: Ed25519 (classical) + Dilithium-3 (PQC hybrid).
- Password hashing: Argon2id > bcrypt > scrypt > PBKDF2-HMAC-SHA256.
- Thư viện: libsodium, Tink (Google), OpenSSL 3.0+, BoringSSL, AWS-LC, ring (Rust).
Không dùng: ECB, CBC không MAC, RSA-PKCS#1 v1.5, SHA-1/MD5 cho chữ ký, 3DES, RC4, DES, tự thiết kế crypto.