Mã hóa/Giải mã CAST5 (CAST-128)
Mã khối đối xứng an toàn với độ dài khóa thay đổi (40-128 bit)
Cảnh báo bảo mật
Công cụ này dành cho mục đích giáo dục và thử nghiệm. Đối với môi trường sản xuất yêu cầu bảo mật cao, hãy xem xét sử dụng AES-256 hoặc các thuật toán mã hóa hiện đại khác. Đừng bao giờ chia sẻ khóa mã hóa của bạn.
Giới thiệu về mã hóa CAST5 (CAST-128)
CAST5 (còn gọi là CAST-128) được thiết kế bởi Carlisle Adams và Stafford Tavares tại Nortel (Northern Telecom) và published như RFC 2144 năm 1996. Tên CAST xuất phát từ chữ cái đầu tên thiết kế viên: Carlisle Adams Stafford Tavares. Sử dụng khối 64-bit với độ dài khóa biến từ 40 đến 128 bit theo bước 8 bit, được chọn là mật mã đối xứng bắt buộc trong OpenPGP (RFC 4880) và là mật mã mặc định trong GnuPG 1.x đến phiên bản 1.4.
CAST5 sử dụng ba hàm vòng khác nhau — Loại 1 (đầu ra XOR), Loại 2 (đầu ra trừ) và Loại 3 (đầu ra cộng) — chọn các cặp khác nhau từ tám S-box đầu ra 32-bit theo thứ tự cố định qua các vòng. Khóa 80 bit trở xuống dùng 12 vòng; khóa dài hơn dùng 16 vòng. Tám S-box được xây dựng bằng hàm Boolean cong, cấp cho CAST5 giới hạn kháng cự có thể chứng minh đối với phân tích mã vi sai, được xác lập chính thức ngay từ thiết kế.
Đặc điểm chính
- Độ dài khóa biến: 40–128 bit theo bước 8 bit — hỗ trợ đồng thời cả mức khóa 40 bit bị hạn chế xuất khẩu Mỹ thập niên 1990 và cường độ đầy đủ 128 bit trong một thuật toán duy nhất
- Ba hàm vòng khác nhau (Loại 1 XOR / Loại 2 Trừ / Loại 3 Cộng) xen kẽ qua các vòng, mỗi loại chọn một cặp khác từ tám S-box 32×8-bit
- 12 vòng cho khóa ≤ 80 bit; 16 vòng cho khóa 81–128 bit — bù đắp số vòng rõ ràng cho entropy khóa ngắn
- Thuật toán miễn phí bản quyền không có hạn chế bằng sáng chế
Các chế độ mã hóa
- CBC: Chuỗi khối mật mã — mỗi khối CAST5 64-bit được XOR với mật mã trước trước chuỗi 12 hoặc 16 hàm vòng Feistel. Lưu ý: OpenPGP (RFC 4880 §13.9) bắt buộc dùng CFB-có-resync thay vì CBC cho mã hóa khối lượng lớn; CBC là chế độ đúng khi sử dụng CAST5 trong ngữ cảnh SSH2 (CAST128-CBC, RFC 4253).
- ECB: Sổ mã điện tử — mỗi khối CAST5 64-bit được xử lý độc lập qua tất cả 12 hoặc 16 vòng. Các khối văn bản gốc giống nhau luôn tạo ra mật mã giống nhau, lộ các mẫu lặp lại. Với độ rộng khối 64-bit, va chạm giới hạn sinh nhật đạt xác suất 50% sau ~2³² khối (~32 GB dưới một khóa) — tránh hoàn toàn ECB.
- CTR: Chế độ bộ đếm - Chuyển đổi mã khối thành mã luồng, cho phép xử lý song song
- CFB: Phản hồi mật mã — chế độ được OpenPGP (RFC 4880 §13.9) yêu cầu: CAST5 trong CFB 64-bit với bước tái đồng bộ hai khối ở đầu thông điệp. CFB-có-resync đặc thù của OpenPGP này cho phép người nhận khôi phục đồng bộ và phát hiện các khối đầu bị giả mạo.
- OFB: Phản hồi đầu ra — hàm khối CAST5 lặp lại mã hóa IV để tạo luồng khóa độc lập với văn bản gốc. Với IV 64-bit, chu kỳ thống kê luồng khóa bị giới hạn bởi bài toán sinh nhật ở ~2³² vòng; với luồng lớn hoặc lâu dài, cập nhật IV định kỳ.
- RAW: Chế độ khối đơn - Mã hóa trực tiếp không chuỗi, chỉ cho khối 8 byte duy nhất
So sánh thuật toán
| Thuật toán | Độ dài khóa | Kích thước khối | Bảo mật | Tốc độ |
|---|---|---|---|---|
| CAST5 (CAST-128) | 40-128 bit | 64 bits | Tốt | Nhanh |
| Blowfish | 32-448 bits | 64 bits | Tốt | Nhanh |
| AES | 128/192/256 bits | 128 bits | Xuất sắc | Nhanh |
| Twofish | 128/192/256 bits | 128 bits | Xuất sắc | Nhanh |
Lưu ý bảo mật
- Không có tấn công thực tế toàn vòng nào tồn tại chống CAST5-128; phân tích mã tốt nhất được công bố chỉ đạt 6 trong 16 vòng. Tuy nhiên, CAST5 với khóa 40 bit (cấp xuất khẩu) bị phá dễ dàng bằng brute force — không bao giờ sử dụng khóa ngắn hơn 128 bit trong bất kỳ triển khai hiện đại nào.
- Kích thước khối 64-bit là hạn chế chính của CAST5: trong chế độ CBC hoặc CFB, rò rỉ thống kê giới hạn sinh nhật xuất hiện sau ~2³² khối (~32 GB mỗi khóa). OpenPGP giảm thiểu điều này bằng khóa phiên mỗi thông điệp, nhưng sử dụng streaming lâu dài với khối lượng lớn cần xoay vòng khóa.
- OpenPGP (RFC 4880 §9.2) đánh dấu CAST5 là thuật toán MUST-implement để tương thích với cơ sở cài đặt của GnuPG 1.x và PGP 8.x. Các triển khai mới NÊN ưu tiên AES-256 cho thông điệp mới tạo — CAST5 là yêu cầu phía nhận, không phải mặc định được khuyến nghị cho đầu ra mới.
- Với tất cả thiết kế mới, thay thế CAST5 bằng AES-128-CBC hoặc AES-256-GCM. Hạn chế khối 64-bit hơn bất kỳ điểm yếu phân tích mã nào là động lực chính để di chuyển; CAST5-128 bản thân vẫn chưa bị phá khi sử dụng với khóa đủ dài và quản lý IV đúng cách.
Các trường hợp sử dụng phổ biến
- Tương thích mã hóa email và file OpenPGP: RFC 4880 §9.2 bắt buộc CAST5 trong tất cả triển khai OpenPGP tuân thủ, cần thiết để tương tác với cơ sở cài đặt người dùng GnuPG 1.x và PGP 8.x chưa cập nhật tùy chọn mã
- Mã hóa đối xứng GnuPG 1.x: GnuPG 1.0–1.4.x mặc định dùng CAST5 cho mã hóa khóa đối xứng (cụm mật khẩu). Giải mã file hoặc thông điệp đã ký từ các phiên bản GnuPG này cần hỗ trợ CAST5 trừ khi người gửi đã chọn rõ ràng AES
- Mật mã vận chuyển SSH2 CAST128-CBC: RFC 4253 định nghĩa CAST128-CBC là mật mã SSH SHOULD-support. Máy chủ SSH cũ và thiết bị nhúng với firmware hạn chế có thể vẫn thương lượng CAST128-CBC nếu bộ mã AES không khả dụng
- Giải mã pháp y và lưu trữ: email mã hóa PGP, ảnh đĩa và bộ sao lưu từ cuối thập niên 1990 đến giữa 2000s thường dùng CAST5. Khôi phục dữ liệu cần hỗ trợ CAST5 dù hệ thống hiện tại không còn tạo nội dung CAST5 mới
Tài liệu tham khảo
Công Cụ Liên Quan
Mã Hóa/Giải Mã Blowfish
Mã hóa khối đối xứng nhanh do Bruce Schneier thiết kế, hỗ trợ độ dài khóa biến đổi (32-448 bit)
Mã Hóa/Giải Mã Twofish
Ứng viên AES, mã hóa đối xứng với khối 128-bit và khóa 128/192/256-bit, do Bruce Schneier thiết kế
Mã Hóa/Giải Mã AES
Mã hóa và giải mã văn bản an toàn bằng thuật toán AES