Раздел: Документация
0 ... 97 98 99 100 101 102 103 ... 169 Отличие для схемы при Nk>6 состоит в применении SubByte для каждого 4-го байта из Nk. Цикловая константа независит от Nk и определяется следующим образом: Rcon[i] = (00 , 00 , 00 ), где RC[0]=01 RC[i]=xtime(Rcon[i-l]) Выбор циклового ключа i-ый цикловой ключ получается из слов массива циклового ключа от W[Nb*i] и fl.oW[Nb(i+l)]. Это показано на рисунке 6. V к, к. Рисунок 6. Расширение ключа и выбор циклового ключа для№-1 и Nk-4 Замечание: Алгоритм выработки ключей можно осуществлять и без использования массива W[Nb*(Nr+l)]. Для реализаций, в которых существенно требование к занимаемой памяти, цикловыемогут вычисляться на лету посредством использования буфера из Nk слов. 302 Шифр Шифр Rijndael состоит из: ♦начального добавления циклового ключа; Nr-1 циклов; *заключительного цикла. На псевдо-Си это выглядит следующим образом: Rijndael (State, CipherKey) KeyExpansion (CipherKey, ExpandedKey) ; // Расширение ключа AddRoundKey (State, ExpandedKey);// Добавление циклового ключа For ( i-1 ; i<Nr ; i++) Round ( State, ExpandedKey+Nb*i); // никлы FinalRound(State,ExpandedKey+Nb*Nr) ;// заключительный цикл ) Если предварительно выполнена процедура расширения ключа, то Rijndael будет выглядеть следующим образом: Rijndael (State, CipherKey) { AddRoundKey (State, ExpandedKey) ; For ( i-1 i<NrRound (State,ExpanaedKey+Nb*i) ; FinalRound(State,ExpandedKey+Nb*Nr) ; } Замечание: Расширенный ключ должен всегда получаться из ключа шифрования и никогда не указывается напрямую. Нет никаких ограничений на выбор ключа шифрования. Предварительные наброски по доработке LOKI Эта статья представляет наброски по доработке LOKI — блочного шифра с секретным ключом. В настоящий момент я 303 предлагаю использовать его для 16-битного шифра Фейстеля со 128-битными данными и 256-битным ключевым расписанием, которое может быть получено из 128 , 192 или 256-битных ключей. 16 циклов вычисления данных используют сбалансированную петлю Фейстеля со сложной функцией f, которая объединяет два S-P слоя .256-битный алгоритм выработки ключей использует 33 цикла несбалансированной петли Фейстеля, применяющей ту же сложную функцию f для генерации вспомогательных ключей. LOKI91 — это 64-битныйсимметричный блочный шифр с 64-битным пользовательским ключом. Первоначально он был спроектирован L.Brown, J.Pieprzyk и J.Seberry в 1990 [BrPS90] и позже доработан L.Brown, M.Kwan, J.Pieprzyk и J.Seberry [BKPS91] (и переименован в LOKI91) с улучшенной устойчивостью к разностному анализу. Первоначальная версия LOKI89 была исследована Bil am и Shamir [BiSh91] и Knudsen [Knud91]. Они определили, что хотя версия LOKI89 с уменьшенным количеством циклов и чувствительна к разностному анализу, но полная 16-цикловая версия — нет. Последующая доработка LOKI91 по усилению стойкости была исследована Knudsen[Knud92]. Он определил, что нет характеристик, позволяющих с достаточно высокой вероятностью успешно проводить разностный анализ; что размер отображения f-функции в LOKI91 равен 8/13x2 ; а также что есть атака по выбранному открытому тексту, которая уменьшает поиск полным перебором ключей в почти в 4 раза, используя 2j2+2 выбранных открытых текстов. В последующих статьях Knudsen [Knud94] обсудил концепцию слабых хэш-ключей в LOKI. Bihamввел несколько новых типов криптоатак, которые используют соотношения между вспомогательными ключами. Он применил такую атаку к обеим версиям LOKI. Для LOKI91 сложность подхода порядка 0(261), что быстрее, чем полный перебор и сравнимо с результатами Knudsen-a. Tokita, Sorimachi и Matsui [ToSM94] исследовали чувствительность LOKI91 к линейному анализу и выяснили , что версии с 12 и более циклами устойчивы к нему. Впоследствии Knudsen и Robshaw [KnRo96] провели выгодные улучшения по эффективности поиска, используя нелинейную аппроксимацию, но 12 и более циклов 304 0 ... 97 98 99 100 101 102 103 ... 169
|