Доработка LOKI.
Основные причины дальнейшей доработки LOKI - это слабости, обусловленные его алгоримтом выработки ключей, и происходящее развитие в области аппаратного обеспечения (продемонстрированное недавно восстановление грубой "животной" силой 56-битного ключа DES[RSAD97] ),которое наглядно демонстрирует малые размеры ключевого пространства.
В осуждении доработки, я предлагаю здесь несколько статей , которые необходимо рассмотреть как с перспективы безопасности , так и с перспективы выполнения.
Факторы безопасности.
Knudsen [Knud93] определил следующие необходимые условия безопаснос-ти для шифра Фейстеля: 
•	отсутствие простых отношений 
•	все ключи одинаково хороши 
•	устойчивость к разностному анализу 
•	устойчивость к линейному анализу 
Основываясь на этих условиях , выше привед╠нных рассмотрениях LOKI91 и комментариях по разработке блочных шифров в Schneier[Schn96], некоторые выводы, которые, как я думаю, необходимо рассмотреть с точки зрения перспектив безопасности, включают следующее : 
•	Алгоритм выработки ключей должен быть нелинейным, чтобы предотвратить существование эквивалентных ключей и атак , связанных с ключами. Вспомогательные ключи должны быть получены путем использования нелинейных функций (очень подходит та же функция , что используется в циклах для данных), и, кроме того, биты вспомогательных ключей должны зависеть от большого числа бит ключа. 
•	нелинейная функция должна полностью обеспечивать лавинный эффект за одно использование сразу над всеми битами 
•	нелинейная функция должна быть максимально невосприимчива как к разностному, так и к линейному анализу 
•	нелинейная функция должна быть составлена из набора S - блоков с высокой нелинейностью, и с либо перестановками , либо со смешением операций, используемых для обеспечения эффекта лавинности 
•	возможно создание нескольких компонент функций , зависящих только от ключевых битов (либо несколько входов S-блоков -только ключи, либо ключевые перестановки для избранного обмена битами) 
Факторы реализации.
Результаты рассмотрения перспектив исполнения включают в себя : 
•	S - блоки с 12 битами входа - наиболее широко подходящая часть для предварительно вычисляемого табличного задания. 
•	S - блоки должны быть определены функционально так, чтобы предварительно вычисляемые таблицы могли быть созданы во время выполнения/инициализации. Это необходимо, чтобы минимизировать код при максимальной скорости 
•	нелинейная функция должна вычисляться с помощью малого числа табличных заданий и других примитивных операций 
Уроки других шифров.
При доработке я искал разнообразные моменты, чтобы учесть их, у шифров, которые были реализованы после первоначальной версии LOKI. Описание этих шифров взято из Schneier[Schn96] (если нет дополнительных отметок).
BLOWFISH
64 - битный , 16 - цикловой блочный шифр Фейстеля с переменной длиной ключа , разработан B.Schneier в 1994. Использует четыре больших 8*32- битовых случайных S - блоков , генерируемых из поставляемого ключа , выходы которых смешиваются с использованием обычного сложения и сложения по модулю 2. Результат - быстрый шифр, при условии неизменности ключа. Ключевое расписание длинное и сложное. Vaudenay [Vaud96] описал атаки на уменьшенной по циклам версии и отметил некоторые недостатки , обусловленные использованием рассеянных S - блоков .
CAST
64 - битный , 8 - цикловой блочный шифр Фейстеля c 64 - битным ключом, разработанный C.Adams и S.Tavares в 1993.Использует шесть 8*32 - битовых 
S - блоков ( из них некоторые используют данные , а некоторые - ключ), выходы которых смешиваются с помощью xor. Эти S - блоки разработаны и предназначены для прикладных систем. Vaudenay [Vaud96] также прокомментировал CAST и его использование рассеянных S - блоков , даже если они разработаны не случайным образом.
ICE
64 - битный , 16 - цикловой блочный шифр Фейстеля c 64 - битным ключом
(хотя возможны варианты) , разработан в 1997 .Использует ключевые перестановки наряду со неизменными , высоко нелинейными S - блоками.
IDEA
64 - битный , 8 - цикловой итеративный блочный шифр с 128 - битным ключом, разработанный X.Lai и J.Massey в 1990. Используется концепция 
"смешения операций различных алгебраических структур".
SAFER
64 - битный , 6 - цикловой или больше , итеративный блочный шифр с 64 или 128 - битовым ключом , разработанный J.Massey в 1994. Использует цикл, скомбинированный из множества функциональных уровней, с тремя слоями PHT - линейных операций для обеспечения эффекта лавинности .Анализ серьезных ослаблений в первоначальном ключевом расписании ,включающий Knudsen[Knud95], а также анализ Knudsen и Berson [KnBe96] успешной разностной атаки на 5 - цикловой версии . Они отметили также , что PHT - преобразования - это основной источник ослаблений , которые допускают атаку.
SPEED
переменные входные данные (64, 128 или 256) , и ключ (48 - 256 ) и цикловой (>32) блочной шифр , использующий несбалансированную сеть , разработанный Zheng в 1997 [Zhen]. Использует ключевые биты нелинейной булевой операции , а данные зависимы от циклического сдвига в каждом цикле, с большим числом циклов , нуждающихся в простой цикловой функции и ограниченного рассеяния на цикл.
TEA
простой 64 - битный , 32 - цикловой блочный шифр Фейстеля со 128 - битным ключом , разработанный Wheeler и Needham [WhNe94]в 1994. Используется очень простой фунциональный цикл , скомбинированный из варианта сложения и xor -а наряду с левым и правым сдвигом для обеспечения нелинейности. Все это повторяется достаточно большое число циклов для обеспечения достаточной сложности.
Отметим следующие моменты :
случайность против расчета в S - блоках 
Schneier[Schn96] цитируя L.O'Connor отметил , что для больших S - блоков использование случайных - хороший выбор. Но обычно существуют части "плохих" блоков , что и наблюдается. Я чувствую себя более комфортно с мыслью о разработке S - блоков с гарантированными характеристиками. Недостаток в том , что они известны и могут быть исследованы (зато получать мы их будем правильными :-)
использование несовместных операторов смешения 
начатое в IDEA, с тех пор оно используется в большом количестве шифров. Я думаю, желательно гарантировать, что наша цикловая функция использует концепцию того , что не смешиваются "удачные" с этой точки зрения операции.
сложность одного цикла против количества циклов 
IDEA использует гораздо более сложную цикловую функцию с высокой степенью секретности, чтобы использовать меньшее количество циклов, тогда как TEA иллюстрирует противоположный подход. Я более расположен к подходу , использующему сложность функций .