So sánh AES-256 và ChaCha20: Thuật toán nào an toàn hơn?
AES-256 và ChaCha20 đều an toàn ở mức hiện chưa có tấn công thực tế nào phá được khi dùng đúng cách; khác biệt nằm ở thiết kế và hiệu năng chứ không phải mức "cái nào dễ bị phá hơn". AES-256 là mã khối, cực nhanh trên bộ xử lý có lệnh tăng tốc phần cứng AES. ChaCha20 là mã dòng xây dựng từ phép cộng, xoay bit và XOR, chạy nhanh và an toàn trước tấn công kênh phụ ngay cả khi không có phần cứng hỗ trợ. Bài viết đi sâu vào cấu trúc bên trong của hai thuật toán để giải thích vì sao chúng có những đặc tính như vậy.
Lý lịch của hai thuật toán
AES
AES (Advanced Encryption Standard) là thuật toán Rijndael của hai nhà mật mã học người Bỉ Joan Daemen và Vincent Rijmen, được NIST chọn sau một cuộc thi công khai và chuẩn hóa năm 2001 trong FIPS 197. AES có kích thước khối 128 bit và ba độ dài khóa 128, 192, 256 bit, tương ứng 10, 12 và 14 vòng biến đổi.
ChaCha20
ChaCha do Daniel J. Bernstein công bố năm 2008, là biến thể cải tiến của Salsa20, thuật toán từng được chọn trong danh mục eSTREAM. Con số 20 chỉ số vòng. ChaCha20 dùng khóa 256 bit và nonce 96 bit (theo chuẩn IETF). Kết hợp với bộ xác thực Poly1305, nó được chuẩn hóa thành ChaCha20-Poly1305 trong RFC 8439.
Cấu trúc bên trong
AES: mạng thay thế hoán vị
Mỗi vòng AES gồm bốn bước trên một ma trận trạng thái 4x4 byte:
- SubBytes: thay mỗi byte bằng giá trị trong bảng S-box, tạo tính phi tuyến.
- ShiftRows: dịch vòng các hàng.
- MixColumns: trộn các cột bằng phép nhân trên trường hữu hạn.
- AddRoundKey: XOR với khóa vòng sinh từ khóa chính.
AES chỉ mã hóa từng khối 16 byte. Để mã hóa dữ liệu dài, cần một chế độ hoạt động, phổ biến nhất hiện nay là GCM (Galois/Counter Mode), vừa mã hóa vừa tạo thẻ xác thực.
ChaCha20: thiết kế ARX
ChaCha20 sắp xếp hằng số, khóa, bộ đếm và nonce vào một ma trận 16 từ 32 bit. Hàm "quarter round" chỉ dùng ba phép toán: cộng modulo 232, xoay bit và XOR, gọi chung là ARX. Sau 20 vòng, kết quả được cộng với trạng thái ban đầu để tạo một khối 64 byte dòng khóa, rồi XOR với bản rõ. Không có bảng tra cứu nào.
Bảng so sánh kỹ thuật
| Đặc điểm | AES-256 | ChaCha20 |
|---|---|---|
| Loại | Mã khối, cần chế độ hoạt động | Mã dòng |
| Khóa | 256 bit | 256 bit |
| Số vòng | 14 | 20 (10 vòng đôi) |
| Phép toán chính | S-box, nhân trên trường hữu hạn | Cộng, xoay, XOR |
| Cặp xác thực phổ biến | GCM | Poly1305 |
| Tăng tốc phần cứng | Có trên hầu hết CPU máy tính và nhiều chip di động | Không cần, tận dụng tốt lệnh vector |
| Kháng tấn công thời gian khi cài bằng phần mềm | Khó, bản cài dùng bảng tra dễ rò rỉ qua bộ nhớ đệm | Tự nhiên, vì không có bảng tra phụ thuộc bí mật |
| Chứng nhận | Chuẩn FIPS, bắt buộc trong nhiều môi trường tuân thủ | Chuẩn IETF, ít xuất hiện trong danh mục FIPS truyền thống |
Hiệu năng: phụ thuộc phần cứng
Trên CPU có lệnh tăng tốc AES (như AES-NI trên x86 hoặc phần mở rộng mật mã trên ARMv8), AES-GCM thường nhanh hơn hoặc tương đương ChaCha20-Poly1305. Trên thiết bị không có tăng tốc như chip nhúng giá rẻ, một số điện thoại cũ hay vi điều khiển, ChaCha20 thường nhanh hơn đáng kể so với AES cài bằng phần mềm, đồng thời tiết kiệm pin. Đây là lý do nhiều dịch vụ web ưu tiên ChaCha20-Poly1305 cho thiết bị di động không có tăng tốc AES.
Độ an toàn: ngang nhau trên thực tế
Với AES, các tấn công phân tích mật mã tốt nhất trên phiên bản đầy đủ chỉ giảm độ an toàn một lượng rất nhỏ so với dò khóa toàn bộ, không có ý nghĩa thực tế. Một số tấn công lý thuyết về khóa liên quan với AES-256 tồn tại nhưng không áp dụng cho cách dùng thông thường. Với ChaCha20, phân tích công khai chỉ tấn công được các phiên bản giảm số vòng thấp hơn nhiều so với 20.
Trước máy tính lượng tử, thuật toán Grover về lý thuyết giảm một nửa độ dài khóa hiệu dụng, nên khóa 256 bit vẫn để lại biên an toàn lớn cho cả hai. Đây là lý do mật mã đối xứng ít bị lo ngại hơn mật mã khóa công khai, như phân tích trong bài mã hóa lượng tử và tương lai bảo mật.
Rủi ro thực tế đến từ cách dùng: lặp nonce, chọn chế độ sai, quản lý khóa kém hoặc cài đặt không chạy trong thời gian hằng định. Những sai lầm này được bàn chi tiết trong bài chọn AES-256 hay ChaCha20 khi triển khai.
Hai thuật toán xuất hiện ở đâu
- TLS 1.3: cả ba bộ mã bắt buộc hoặc khuyến nghị đều là AEAD: AES-128-GCM, AES-256-GCM và ChaCha20-Poly1305. Xem thêm cơ chế bắt tay trong bài chứng chỉ SSL/TLS hoạt động trên website.
- WireGuard: dùng cố định ChaCha20-Poly1305 để đơn giản hóa và tránh đàm phán thuật toán.
- Mã hóa ổ đĩa: BitLocker, FileVault, LUKS dùng AES ở chế độ XTS, vì phần cứng tăng tốc và yêu cầu tuân thủ.
- SSH và ứng dụng nhắn tin: hỗ trợ cả hai tùy cấu hình.
- Lưu trữ đám mây: chủ yếu AES-256 trong mô hình mã hóa phong bì.
Kết luận
Không có người thắng tuyệt đối. AES-256 là lựa chọn mặc định ở nơi có phần cứng tăng tốc và yêu cầu chuẩn FIPS. ChaCha20 tỏa sáng trên thiết bị không có tăng tốc AES và trong các giao thức muốn thiết kế đơn giản, ít rủi ro kênh phụ. Điều quan trọng hơn việc chọn thuật toán là dùng nó qua thư viện mật mã uy tín, với chế độ mã hóa xác thực và quản lý khóa, nonce đúng cách.
Câu hỏi thường gặp
AES-256 có an toàn hơn AES-128 không?
AES-256 có biên an toàn lớn hơn, đặc biệt trước máy tính lượng tử theo lý thuyết. Tuy vậy AES-128 vẫn được coi là an toàn cho đa số ứng dụng hiện nay và nhanh hơn một chút.
Vì sao WireGuard chỉ dùng ChaCha20?
Thiết kế của WireGuard cố ý chọn một bộ thuật toán cố định để giảm độ phức tạp và tránh tấn công hạ cấp. ChaCha20-Poly1305 nhanh trên nhiều loại thiết bị và dễ cài đặt an toàn.
ChaCha20 và Salsa20 khác nhau thế nào?
ChaCha20 là biến thể của Salsa20 với hàm vòng được điều chỉnh để mỗi vòng khuếch tán bit tốt hơn, đồng thời giữ hiệu năng cao. ChaCha20 được dùng rộng rãi hơn trong các giao thức hiện đại.
Làm sao biết CPU có hỗ trợ tăng tốc AES?
Phần lớn CPU máy tính từ khoảng một thập kỷ trở lại đây đều có. Trên Linux có thể kiểm tra cờ aes trong thông tin CPU; trên Windows có thể dùng công cụ xem thông tin bộ xử lý.
Bài liên quan

Bảo mật dữ liệu trên đám mây: Mã hóa ở trạng thái nghỉ và chuyển động
Giải thích mã hóa dữ liệu đám mây ở trạng thái nghỉ và khi chuyển động, mã hóa phong bì, các mô hình quản lý khóa KMS, HSM và danh sách việc cho doanh nghiệp.

Cách bảo vệ file tài liệu quan trọng bằng mã hóa GPG/PGP
Hướng dẫn mã hóa file bằng GPG: mã hóa bằng mật khẩu, bằng khóa công khai, ký số, mã hóa thư mục, quản lý và sao lưu khóa, các sai lầm cần tránh.

Hàm băm Cryptographic Hash Functions: Vai trò trong xác thực dữ liệu
Hàm băm mật mã hoạt động thế nào, ba tính chất bảo mật cốt lõi, so sánh MD5, SHA-1, SHA-2, SHA-3 và ứng dụng trong chữ ký số, lưu mật khẩu, kiểm tra tệp.

Hiểu rõ về chứng chỉ SSL/TLS và cách thức hoạt động trên Website
Giải thích chứng chỉ SSL/TLS: nội dung chứng chỉ, chuỗi tin cậy, bắt tay TLS 1.3, các loại DV, OV, EV, ý nghĩa ổ khóa và cấu hình HTTPS đúng cho quản trị web.