Шифрование и дешифрование LOKI97
Австралийский блочный шифр - Кандидат AES с 128-битными блоками и переменной длиной ключа
Предупреждение о безопасности
LOKI97 был кандидатом AES, но не был выбран в качестве стандарта. Для новых приложений, требующих высокой безопасности, рекомендуется AES (Rijndael).
О LOKI97
LOKI97 — третье поколение австралийского семейства шифров LOKI, разработанного Лори Брауном (Австралийская военная академия) и Йозефом Пепжиком (Университет Маккуори). Семейство началось с LOKI89 (1990, 64-битные блоки), уязвимого к дифференциальному криптоанализу Бихама и Шамира; LOKI91 исправил S-блоки; LOKI97 — полный редизайн 1998 года, поданный как кандидат AES с 128-битными блоками и ключами 128, 192 или 256 бит.
Самый отличительный структурный элемент LOKI97 — его S-блоки, генерируемые вычислением неприводимых многочленов над GF(2¹³) — алгебраически более сложная конструкция, чем S-блоки DES или SubBytes AES. Расписание ключей выводит все раундовые подключи, рекурсивно применяя саму раундовую функцию LOKI97 к мастер-ключу.
Основные характеристики
- 128-битный размер блока — обновление с 64-битных блоков LOKI89, устранение уязвимости дня рождения
- Три размера ключа: 128, 192 и 256 бит — соответствует полному диапазону длин ключей AES
- 16-раундовая сеть Фейстеля с S-блоками, сгенерированными над GF(2¹³)
- Самореференциальное расписание ключей — раундовые подключи выводятся рекурсивным применением раундовой функции LOKI97
- Австралийское происхождение: разработан в ADFA и Университете Маккуори, единственный кандидат AES с исключительно южнополушарной академической родословной
История семейства LOKI
- LOKI89: Оригинальный шифр, разработанный в 1989 году с 64-битными блоками и 64-битными ключами.
- LOKI91: Улучшенная версия, исправляющая слабости, найденные в LOKI89.
- LOKI97: Финальная эволюция с 128-битными блоками, представленная на конкурс AES.
Режимы шифрования
- CBC: Сцепление шифроблоков — каждый 128-битный блок LOKI97 XOR-ируется с предыдущим шифртекстом перед 16-раундовой последовательностью Фейстеля с S-блоками GF(2¹³). Блоки 128 бит делают вероятность коллизии пренебрежимо малой до ≈ 2⁶⁴ блоков (~148 ЭБ на ключ) — атака Sweet32 практически неприменима.
- ECB: Электронная кодовая книга — каждый 128-битный блок LOKI97 независимо обрабатывается всеми 16 раундами. Одинаковые блоки всегда дают одинаковый шифртекст. Приемлемо только для одноблочного токена/обёртывания ключа.
- CFB: Обратная связь по шифртексту — 128-битная блочная функция LOKI97 шифрует предыдущий шифроблок, и верхние n бит XOR-ируются с n битами открытого текста. Диффузия Фейстеля обеспечивает стойкость к известным атакам.
- OFB: Обратная связь по выходу — блочная функция LOKI97 генерирует детерминированный ключевой поток, итеративно перешифровывая состояние независимо от открытого текста. 128-битное внутреннее состояние гарантирует цикл ключевого потока ≥ 2⁶⁴.
- RAW: Сырой блок - Прямое шифрование одного блока без режима сцепления. IV не требуется. Только для 128-битных блоков.
Структура алгоритма
LOKI97 использует 16-раундовую структуру сети Фейстеля. Каждый раунд обрабатывает 128-битный блок, разделенный на две 64-битные половины (L и R).
Расписание ключей
256-битный мастер-ключ расширяется в 48 подключей (SK[0] до SK[47]) с использованием функции f и константы DELTA (производной от золотого сечения). Для 128-битных или 192-битных ключей ключевой материал реплицируется для заполнения 256-битного регистра ключа перед расширением.
Раундовая функция
Каждый раунд применяет: L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). Сложение по модулю 2^64.
Функция f
Основная функция f f(A, B) состоит из четырех слоев:
- KP (Перестановка, управляемая ключом): Выбирает биты из A на основе управляющих битов в B
- Sa (Слой S-блоков a): Восемь параллельных поисков S-блоков двух типов (S1: 13→8 бит, S2: 11→8 бит)
- P (Перестановка): 64-битная перестановка с использованием шаблона чередования битов 8×8
- Sb (Слой S-блоков b): Второй раунд восьми поисков S-блоков с дополнительным ключевым материалом из B
S-блоки
S1 имеет 8192 записи (13-битный вход → 8-битный выход), S2 имеет 2048 записей (11-битный вход → 8-битный выход). Оба вычисляются с использованием кубических операций в GF(2^13) и GF(2^11) соответственно, со специфическими порождающими полиномами для сильной нелинейности.
Дешифрование
Дешифрование использует ту же структуру, но применяет подключи в обратном порядке (от SK[47] до SK[0]) и использует вычитание вместо сложения.
Сравнение алгоритмов
| Алгоритм | Длина ключа | Размер блока | Безопасность | Скорость |
|---|---|---|---|---|
| LOKI97 | 128/192/256 bits | 128 bits | Хорошая | Средняя |
| AES | 128/192/256 bits | 128 bits | Отличная | Быстрая |
| Serpent | 128/192/256 bits | 128 bits | Отличная | Средняя |
| DES | 56 bits | 64 bits | Слабая | Быстрая |
Вопросы безопасности
- Практических атак на все 16 раундов LOKI97 не известно. Конструкция S-блоков GF(2¹³) специально разработана для противодействия дифференциальному и линейному криптоанализу, выявленному в LOKI89.
- 128-битные блоки устраняют атаку Sweet32 на 64-битные LOKI89/91. Коллизия под LOKI97 потребует ≈ 2⁶⁴ блоков (~148 ЭБ) — на практике невозможно.
- Выбывание LOKI97 на оценке AES было суждением об эффективности, а не безопасности. Комитет AES указал на более медленную программную производительность по сравнению с Rijndael и Twofish. Криптографических слабостей выявлено не было.
- Для всех новых систем используйте AES-128-GCM или AES-256-GCM. LOKI97 подходит для расшифровки данных из существующих архивов LOKI97 и академических исследований.
Варианты использования
- Академические криптоаналитические исследования: конструкция S-блоков GF(2¹³) и самореференциальное расписание ключей предоставляют уникальный объект изучения для алгебраического дизайна шифров
- Совместимость с австралийскими унаследованными системами: данные, зашифрованные LOKI97 в правительственных или оборонных системах Австралии конца 1990-х
- Сравнительное изучение кандидатов AES: наряду с Serpent, Twofish, RC6 и MARS для полного понимания компромиссов дизайна, оценивавшихся NIST
- Соответствие требованиям без AES: организации, требующие исключительно не-AES шифрования с задокументированным криптоанализом
Ссылки
Связанные инструменты
AES Шифрование/Дешифрование
Безопасное шифрование и дешифрование текста с использованием алгоритма AES
Serpent Шифрование/Дешифрование
Финалист AES с ключами 128/192/256 бит, 32 раунда, обеспечивает отличный запас прочности и доказанную стойкость к криптоанализу
Twofish Шифрование/Дешифрование
Финалист AES, симметричный шифр с 128-битными блоками и ключами 128/192/256 бит, разработан Брюсом Шнайером