- LOKI97
-
LOKI97 Создатель: Lawrie Brown
Создан: 1997 г.
Опубликован: 1998 г.
Размер ключа: 128/192/256 бит
Размер блока: 128 бит
Число раундов: 16
Тип: LOKI97 — 128-битный 16-цикловой симметричный блочный шифр с 128-256-битным пользовательским ключом, используемым как для зашифрования, так и для расшифрования сообщений. Разработан Lawrie Brown совместно с J.Pieprzyk и J.Seberry. Имеет структуру сбалансированной петли сети Фейстеля с использованием 16 циклов и сложной функцией f, которая объединяет два S-P слоя.
На данный момент не находит широкого распространения, поскольку имеет сравнительно низкую скорость шифрования, более высокие требования к ресурсам, чем другие участники конкурса AES, и некоторые потенциальные уязвимости.
При разработке LOKI97 были учтены особенности существующих на этот момент симметричных алгоритмов, учтены их уязвимости и достоинства. В частности, в своей статье «Предварительные наброски по доработке LOKI», 15 декабря 1997 года автор алгоритма L. Brown исследует Blowfish, CAST, IDEA, TEA, ICE, SAFER и ряд других алгоритмов. В этой статье были рассмотрены уязвимости исходного алгоритма — LOKI91, предшественника LOKI97, имеющего недостаток в механизме выработки ключей, который позволял, теоретически, использовать механизм «грубой силы» для атаки.
Шифр LOKI97 не патентован, свободен для использования, позиционируется автором как замена DES и другим блочным алгоритмам. Предшественниками являются алгоритмы LOKI89 и LOKI91. Реализован в библиотеке mcrypt, ряде свободных программ шифрования, существует плагин для Total Commander с поддержкой LOKI97.
Содержание
Криптостойкость
LOKI97 был первым опубликованным кандидатом в конкурсе Advanced Encryption Standard, был в достаточно краткие сроки анализирован и атакован. В работе «Weaknesses in LOKI97»[1] (Rijmen & Knudsen, 1999) было выявлено, что алгоритм имеет ряд недостатков, которые делают его уязвимым к дифференциальному и линейному криптоанализу. Согласно исследованиям, проведенным в рамках конкурса AES, изменение одного бита входных данных в одном из раундов с относительно высокой вероятностью (порядка ) повлечет за собой изменение одного бита в выходных данных, что делает дифференциальную атаку успешной как максимум за попыток. В то же время несбалансированность F-функции делает успешным линейный криптоанализ при известных шуфруемых сообщениях. В то же время автор в описании алгоритма оценивал стойкость LOKI97 на несколько порядков большей (предполагалось, что для взлома необходимо обладать как минимум шифротекстами). Этот анализ недостатков алгоритма не позволил шифру LOKI97 пройти в следующий тур конкурса AES.
Современный 128-битный блочный шифр должен противостоять дифференциальному и линейному криптоанализу лучше чем LOKI97.
Оригинальный текст (англ.)A contemporary block cipher with a 128-bit block ought to resist differential and linear attack muck better than LOKI97.
Спецификация алгоритма LOKI97[2]
LOKI97 преобразует 128-битный блок исходного текста в 128 бит шифротекста. Шифорование происходит следующим образом: 128 бит исходного блока [L|R] делится на 2 64-битных слова
После чего эти слова проходят 16 раундов сбалансированной сети Фейстеля по следующему алгоритму:
Каждый раунд использует как операцию XOR, так и сложение (по модулю 2:64) 64-битных слов, что увеличивает стойкость алгоритма к взлому. Функция F(F,B) обеспечивает максимальное смешивание всех входных битов функции, ее описание будет дано ниже. Процесс расшифровки аналогичен алгоритму получения шифртекста: 16 шагов (от 16 до 1го)
Инициализация ключей LOKI97
В самом алгоритме используется 256-битный ключ, однако ключ, выданный пользователям может быть 256-ти, 192-х, а также 128-битным. Соответственно, если дан 256-битный ключ , тогда
если дан 192-битный ключ , тогда
и если дан 128-битный ключ , тогда
Для усложнения коротких (128-битных) и простых (например, нулевых) ключей при генерации использовалась функция F, используемая в алгоритме далее. Для получения промежуточных ключей с одинаковой эффективностью к атакам используется функция g, один из этапов которой — прибавление постоянной, по словам автора «золотого сечения». Полученный на входе ключ проходит через 48 итераций следующих действий (i=1,48), создавая 48 промежуточных ключей
,где
При дешифровке сообщения промежуточные ключи используются в обратном порядке.
Функция f(A,B)
Функцию можно описать следующим выражением
, в котором:
KP(A, B)
Функция перемешивания битов. Разбивает входное 64-битное слово А на 2 32-битных и младшие 32 бита слова В и на выходе дает 64-битный результат согласно формуле:
С помощью обмена битами с промежуточным ключем и частью входных данных, функция KP перермешивает биты для усложнения процесса сопоставления входных и выходных данных поступающих с и на S-блоки.
E(A)
Функция расширения. Преобразует входное 64-битное слово в 96-битное по следующему закону:
.
Функция построена таким образом, что биты каждый бит на ее входе попадает в 2 S-блока.
Sa(A), Sb(A)
2 группы S-блоков. Построены так, чтобы иметь максимальную нелинейность (отсюда и выбор кубической функции и нечетная степень поля Галуа), имеют хорошую устойчивость к дифференциальному криптоанализа, а также создают лавинный эффект при использовании функции. Используются блоки разной длины S1 — 13 бит, S2 — 11 бит. , и . Входные данные для Sa(C) — 96-битное слово на выходе функции E(B). Cтаршими битами слова для Sb(C) являются старшие 32 бита слова B, использованого как одно из входных для всей функции F(A,B), а младшими — результат действия функции P(D). Входные данные для S-блоков инвертируются для уменьшения вероятности преобразований вида 0-> 0, 1 -> 1. s-блоки считаются по следующим формулам
Операция выбирает 8 младших битов из числа A.
P(A)
Перестановка выходных данных функции Sa(A). 64 бита перемешиваются по следующей схеме:
56 48 40 32 24 16 08 00 57 49 41 33 25 17 09 01 58 50 42 34 26 18 10 02 59 51 43 35 27 19 11 03 60 52 44 36 28 20 12 04 61 53 45 37 29 21 13 05 62 54 46 38 30 22 14 06 63 55 47 39 31 23 15 07 Функция P является основным путем перемешивания битов. При ее построении преследовалась цель максимально уменьшить вероятность появления закономерностей в распределении входных и выходных битов. Как и в предыдущих версиях алгоритма, по словам автора, за основу был взят латинский квадрат.
Пример использования алгоритма
Ключ: 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Текст: 000102030405060708090A0B0C0D0E0F
Шифр: 75080E359F10FE640144B35C57128DAD
Промежуточные ключиSK[0]=ECB82110452BF90A; SK[1]=592CD965E4168E33; SK[2]=1A8E5818A655138C; SK[3]=86E3263EBBBF339C; SK[4]=AD6DFD04A887509B; SK[5]=B3A56496E96B4F0D; SK[6]=52A0073EA724A264; SK[7]=2FF1BF749D54136B; SK[8]=BD0BC040D3A54F28; SK[9]=929220E7076443A8; SK[10]=7FB7D2666220233A; SK[11]=56FE853A068B8D2E; SK[12]=AC1C43D92F7490B6; SK[13]=FBE3491706663C44; SK[14]=E4AC5DE7F5220AB5; SK[15]=F10D78B02017847C; SK[16]=F4FFDEBD5E175312; SK[17]=4396B72AE367FF41; SK[18]=26ED088C13C3993F; SK[19]=C3468074E387B643; SK[20]=2752EDD11A129E73; SK[21]=A46AACF6DD57D61F; SK[22]=5F06EB99CFD8084F; SK[23]=8252416503BE6B13; SK[24]=EF7D17F4791630C3; SK[25]=B5536290E13AAD94; SK[26]=D65073A787DCAF9A; SK[27]=3DB329BD5B9BF213; SK[28]=804E42039A6496DA; SK[29]=DB97B9E35223D540; SK[30]=B152C3DD7A6EE03F; SK[31]=176EECE0F5AA3E62; SK[32]=F0B4C6DA31B841FC; SK[33]=3BDDEA965A9F612D; SK[34]=E03718A6FDC7901A; SK[35]=710587AB3E6A614F; SK[36]=B0C6F115D3ECE6C2; SK[37]=AF82DA2EF75F6924; SK[38]=AA5DE8BDB42A8BDB; SK[39]=50BB552A21F75E7D; SK[40]=B8EB467438FF42E4; SK[41]=936362030FA48C95; SK[42]=E55434C694CE74CE; SK[43]=BDA3575166DF26BC; SK[44]=B779C086BDB9551E; SK[45]=1322E154E6746255; SK[46]=3441894738B21D3D; SK[47]=F9539B20F3944405;
См. также
Примечания
Ссылки
Симметричные криптосистемы Поточный шифр Сеть Фейстеля ГОСТ 28147-89 • Blowfish • Camellia • CAST-128 • CAST-256 • CIPHERUNICORN-A • CIPHERUNICORN-E • CLEFIA • Cobra • DFC • DEAL • DES • DESX • EnRUPT • FEAL • FNAm2 • HPC • IDEA • KASUMI • Khufu • LOKI97 • MARS • NewDES • Raiden • RC5 • RC6 • RTEA • SEED • Sinople • TEA • Triple DES • Twofish • XTEA • XXTEA
SP-сеть Другие Для улучшения этой статьи желательно?: - Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
Категория:- Сеть Фейстеля
Wikimedia Foundation. 2010.