Công cụ mã hóa/giải mã Serpent
Thuật toán vào chung kết AES - mật mã khối siêu an toàn với khóa 128/192/256-bit
⚠️ Lưu ý về hiệu suất
Serpent chậm hơn AES do 32 vòng so với 10-14 vòng của AES. Đối với các ứng dụng quan trọng về hiệu suất, hãy cân nhắc AES. Chọn Serpent khi biên độ an toàn tối đa là ưu tiên của bạn.
Về mã hóa Serpent
Serpent là mật mã đối xứng do Ross Anderson (Cambridge), Eli Biham (Technion) và Lars Knudsen (DTU) thiết kế, nộp cho cuộc thi AES NIST năm 1998. Về nhì — sau Rijndael (AES) — với đánh giá bảo mật cao nhất trong số 5 người vào chung kết. Mạng SP xử lý khối 128 bit qua 32 vòng hoàn chỉnh (gấp 3 AES-128).
Serpent áp dụng 8 S-box 4→4 bit khác nhau theo vòng tròn trong 32 vòng (mỗi S-box xuất hiện chính xác 4 lần). Tất cả được chọn bằng tìm kiếm toàn diện để tối ưu hóa sức đề kháng với mã phân tích vi sai và tuyến tính. Triển khai bitslice: mỗi vị trí bit của 32 khối song song chiếm một thanh ghi CPU 32 bit.
Ủy ban NIST ghi nhận Serpent có độ tin cậy bảo mật cao nhất, nhưng thông lượng vượt trội của Rijndael là yếu tố quyết định. Sau cuộc thi, Schneier và Kelsey kết luận: “Nếu bảo mật là tiêu chí duy nhất, Serpent sẽ là lựa chọn rõ ràng.”
Đặc điểm chính
- Mạng SP 32 vòng: gấp 3 AES-128, gấp 2 AES-256. Tấn công tốt nhất chỉ đạt 12/32 vòng
- S-box bitslice: 128 bit qua 32 phép toán thanh ghi — không tra cứu bảng, miễn dịch với timing attack cache
- 8 S-box 4→4 bit tối ưu qua tìm kiếm toàn diện về sức đề kháng vi sai và tuyến tính
- Lịch trình khóa: 132 khóa con 4 bit dẫn xuất qua phản hồi tuyến tính
- Hỗ trợ khóa 128, 192 và 256 bit với cùng cấu trúc 32 vòng
Các chế độ mã hóa
- CBC: CBC Serpent — khối 128 bit XOR với bản mã trước. Ngưỡng Sweet32 tại 2⁶⁴ khối — thực tế không thể đạt được.
- ECB: ECB Serpent — mỗi khối 16 byte xử lý độc lập. Chỉ cho thao tác một khối.
- CFB: CFB Serpent — luồng tự đồng bộ không có hạn chế Sweet32. Phù hợp cho streaming.
- OFB: OFB Serpent — luồng khóa xác định, chu kỳ 2¹²⁸ khối, không lan truyền lỗi.
So sánh thuật toán
| Thuật toán | Độ dài khóa | Kích thước khối | Số vòng | Bảo mật | Tốc độ |
|---|---|---|---|---|---|
| Serpent | 128/192/256-bit | 128 bits | 32 | Xuất sắc | Chậm |
| AES | 128/192/256 bits | 128 bits | 10-14 | Xuất sắc | Nhanh |
| Twofish | 128/192/256 bits | 128 bits | 16 | Xuất sắc | Nhanh |
Bối cảnh cuộc thi AES
Serpent nhận đánh giá biên độ bảo mật cao nhất trong đánh giá chung kết AES NIST (1999) trong số 5 ứng cử viên.
Rijndael được chọn làm AES vì hiệu năng: thông lượng cao hơn 2-3 lần trên phần cứng thông dụng.
Kelsey và Schneier xác nhận Serpent có biên độ bảo mật lớn hơn đáng kể mà không có điểm yếu kiến trúc.
Cân nhắc về bảo mật
- Không có tấn công trên 32 vòng đầy đủ. Tấn công tốt nhất: 12/32 vòng (boomerang 2011), độ phức tạp 2¹²².
- Các S-box được xác minh toàn diện về phân tích mật mã vi sai và tuyến tính. Tài liệu NIST đầy đủ.
- Triển khai bitslice không có bảng tra cứu → thời gian cố định → chống timing attack cache.
- Serpent-256 cho lưu trữ dài hạn có biên độ bảo mật tối đa. AES-256-GCM cho mạng.
Trường hợp sử dụng
- Mã hóa lưu trữ dài hạn với Serpent-256
- Môi trường chống timing attack: hệ thống nhúng không có AES-NI
- Container đa mật mã (cascade VeraCrypt): Serpent+AES+Twofish
- Tham chiếu học thuật: tài liệu đầy đủ, 25+ năm chưa bị phá vỡ
Tài liệu tham khảo
- Tài liệu cuộc thi AES của NIST
- Wikipedia - Serpent (mật mã)
- Bài báo gốc về Serpent của Anderson, Biham và Knudsen
Công Cụ Liên Quan
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
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ã 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ã RSA
Sử dụng mã hóa bất đối xứng RSA để mã hóa khóa công khai, giải mã khóa riêng, ký số và xác minh