Mã hóa và giải mã LOKI97
Mật mã khối của Úc - Ứng cử viên AES với khối 128 bit và độ dài khóa thay đổi
Cảnh báo bảo mật
LOKI97 là ứng cử viên AES nhưng không được chọn làm tiêu chuẩn. Đối với các ứng dụng mới yêu cầu bảo mật cao, AES (Rijndael) được khuyến nghị.
Về LOKI97
LOKI97 là thế hệ thứ ba của gia đình mật mã LOKI của Úc, được thiết kế bởi Lawrie Brown (Học viện Quân sự Úc) và Josef Pieprzyk (Đại học Macquarie). Gia đình bắt đầu với LOKI89 (1990, khối 64 bit), dễ bị phân tích mật mã vi sai của Biham và Shamir; LOKI91 cải thiện S-box; LOKI97 là thiết kế lại hoàn toàn năm 1998 được đề xuất làm ứng viên AES với khối 128 bit và khóa 128, 192 hoặc 256 bit.
Yếu tố cấu trúc đặc biệt nhất của LOKI97 là S-box, được tạo bằng cách đánh giá đa thức bất khả quy trên GF(2¹³) — cấu trúc đại số phức tạp hơn S-box DES hoặc SubBytes AES trên GF(2⁸). Lịch trình khóa dẫn xuất tất cả khóa con vòng bằng cách áp dụng đệ quy chính hàm vòng LOKI97 cho khóa chính.
Đặc điểm chính
- Khối 128 bit — nâng cấp từ khối 64 bit của LOKI89, loại bỏ lỗ hổng giới hạn sinh nhật
- Ba kích thước khóa: 128, 192 và 256 bit — khớp với toàn bộ dải độ dài khóa AES
- Mạng Feistel 16 vòng với S-box được tạo trên GF(2¹³) — cấu trúc đại số phức tạp hơn DES hoặc AES
- Lịch trình khóa tự tham chiếu — khóa con vòng dẫn xuất bằng cách áp dụng đệ quy hàm vòng LOKI97
- Xuất xứ Úc: thiết kế tại ADFA và Đại học Macquarie, ứng viên AES duy nhất có dòng dõi học thuật Nam Bán Cầu
Lịch sử họ LOKI
- LOKI89: Mật mã gốc được thiết kế vào năm 1989 với khối 64 bit và khóa 64 bit.
- LOKI91: Phiên bản cải tiến khắc phục các điểm yếu tìm thấy trong LOKI89.
- LOKI97: Sự phát triển cuối cùng với khối 128 bit, được đệ trình cho cuộc thi AES.
Các chế độ mã hóa
- CBC: Chuỗi khối mật mã — mỗi khối LOKI97 128 bit được XOR với mật mã trước trước chuỗi 16 vòng Feistel với S-box GF(2¹³). Khối 128 bit giữ xác suất va chạm không đáng kể đến khoảng 2⁶⁴ khối (~148 EB mỗi khóa), tránh hoàn toàn Sweet32.
- ECB: Sổ mã điện tử — mỗi khối LOKI97 128 bit được xử lý độc lập qua tất cả 16 vòng. Các khối giống nhau luôn tạo ra mật mã giống nhau. Chỉ chấp nhận cho mã hóa token/gói khóa đơn khối.
- CFB: Phản hồi mật mã — hàm khối LOKI97 128 bit mã hóa khối mật mã trước và n bit trên cùng được XOR với n bit văn bản gốc. Phân tán Feistel đảm bảo kháng tấn công.
- OFB: Phản hồi đầu ra — hàm khối LOKI97 tạo luồng khóa xác định bằng cách mã hóa trạng thái lặp lại, độc lập với văn bản gốc. Trạng thái nội tại 128 bit đảm bảo chu kỳ luồng khóa ≥ 2⁶⁴.
- RAW: Khối thô - Mã hóa khối đơn trực tiếp không có chế độ xích. Không cần IV. Chỉ cho các khối 128 bit.
Cấu trúc thuật toán
LOKI97 sử dụng cấu trúc mạng Feistel 16 vòng. Mỗi vòng xử lý một khối 128 bit được chia thành hai nửa 64 bit (L và R).
Lập lịch khóa
Khóa chính 256 bit được mở rộng thành 48 khóa con (SK[0] đến SK[47]) sử dụng hàm f và hằng số DELTA (có nguồn gốc từ tỷ lệ vàng). Đối với khóa 128 bit hoặc 192 bit, vật liệu khóa được nhân đôi để lấp đầy thanh ghi khóa 256 bit trước khi mở rộng.
Hàm vòng
Mỗi vòng áp dụng: L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). Phép cộng là modulo 2^64.
Hàm f
Hàm f cốt lõi f(A, B) bao gồm bốn lớp:
- KP (Hoán vị điều khiển bằng khóa): Chọn các bit từ A dựa trên các bit điều khiển trong B
- Sa (Lớp S-box a): Tám tra cứu S-box song song sử dụng hai loại (S1: 13→8 bit, S2: 11→8 bit)
- P (Hoán vị): Hoán vị 64 bit sử dụng mẫu xen kẽ bit 8×8
- Sb (Lớp S-box b): Vòng tra cứu S-box thứ hai với vật liệu khóa bổ sung từ B
Hộp S
S1 có 8192 mục nhập (đầu vào 13 bit → đầu ra 8 bit), S2 có 2048 mục nhập (đầu vào 11 bit → đầu ra 8 bit). Cả hai được tính bằng phép lập phương trong GF(2^13) và GF(2^11) tương ứng, với các đa thức sinh cụ thể để có tính phi tuyến mạnh.
Giải mã
Giải mã sử dụng cùng cấu trúc nhưng áp dụng các khóa con theo thứ tự ngược lại (SK[47] xuống SK[0]) và sử dụng phép trừ thay vì phép cộng.
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 độ |
|---|---|---|---|---|
| LOKI97 | 128/192/256 bits | 128 bits | Tốt | Trung bình |
| AES | 128/192/256 bits | 128 bits | Xuất sắc | Nhanh |
| Serpent | 128/192/256 bits | 128 bits | Xuất sắc | Trung bình |
| DES | 56 bits | 64 bits | Yếu | Nhanh |
Cân nhắc bảo mật
- Không có tấn công thực tế toàn vòng nào đối với LOKI97 được biết đến. Cấu trúc S-box GF(2¹³) được thiết kế đặc biệt để chống lại phân tích mật mã vi sai và tuyến tính phát hiện trong LOKI89.
- Khối 128 bit loại bỏ tấn công Sweet32 sinh nhật ảnh hưởng đến LOKI89/91 64 bit. Va chạm dưới LOKI97 yêu cầu ≈ 2⁶⁴ khối (~148 EB) — không thực tế.
- Thất bại của LOKI97 trong đánh giá AES là phán quyết về hiệu suất, không phải bảo mật. Ủy ban AES trích dẫn hiệu suất phần mềm chậm hơn Rijndael và Twofish. Không có điểm yếu mật mã nào được chỉ ra.
- Dùng AES-128-GCM hoặc AES-256-GCM cho mọi hệ thống mới. LOKI97 phù hợp cho giải mã dữ liệu LOKI97 hiện có và nghiên cứu học thuật.
Trường hợp sử dụng
- Nghiên cứu phân tích mật mã học thuật: cấu trúc S-box GF(2¹³) và lịch trình khóa tự tham chiếu cung cấp đối tượng nghiên cứu độc đáo về thiết kế mật mã đại số
- Tương thích hệ thống cũ của Úc: dữ liệu mã hóa LOKI97 trong hệ thống chính phủ hoặc quốc phòng Úc từ cuối những năm 1990
- Nghiên cứu so sánh ứng viên AES: cùng với Serpent, Twofish, RC6 và MARS để hiểu đầy đủ các đánh đổi thiết kế được NIST xem xét
- Tuân thủ phi-AES: tổ chức yêu cầu mã hóa không phải AES với phân tích mật mã có tài liệu
Tài liệu tham khảo
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ã Serpent
Thuật toán thi đấu AES có khóa 128/192/256 bit, 32 vòng, cung cấp biên độ an toàn xuất sắc và khả năng kháng lại phân tích mật mã
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ế