Алгоритмы шифрования – участники конкурса NESSIE. Часть 3.


Завершаем разговор об алгоритмах шифрования, участвовавших в конкурсе NESSIE.

Алгоритм NUSH

Алгоритм NUSH, шифрующий данные 64-битными блоками, был описан в первой части статьи. Стоит сказать, что данный алгоритм (аналогично, например, известному алгоритму RC5) весьма легко преобразуется под другие размеры блока. На конкурс NESSIE, помимо 64-битного варианта, были представлены еще и варианты алгоритма, обрабатывающие 128-битные и 256-битные блоки данных [5].

128-битный вариант

Отличия 128-битного алгоритма NUSH от 64-битного состоят в следующем:

  1. Выполняется 17 раундов преобразований вместо 9.
  2. Блок данных делится на те же 4 субблока, но они имеют размер по 32-бита (а не по 16 бит). Соответственно, операции сложения и вычитания выполняются по модулю 232.
  3. Используются другие константы c (константы для модификации ключей, используемых в итерациях алгоритма) и s (число бит сдвига), а также другая последовательность логических операций #. Их значения сведены в следующую таблицу:

  4. РаундИтерацияsc#
    0079B28A37B&
    0159DE5B521|
    02150B8EE0D7&
    0314672AA715|
    1030E356C9F|
    1130BF54692A|
    124DC9E15C8|
    132306D736E8|
    20139263E8CF&
    21121FCD682D|
    22267368B074|
    23162654F15A&
    30900EB3E4D|
    312818D62F6D&
    328632A557A|
    33181D953D21|
    4023CD4B2ACD|
    41849A0D3F4|
    4226C443FC66&
    434E84C5BCB&
    5029F750A732&
    51162CDE9942&
    522370C437A&
    5322DA8B5654|
    602399A76750&
    6111A1559437|
    62269EA46718|
    631383E984F8|
    7020AB5692E4&
    715A6C5C46A|
    722825FB110E&
    731755955B2E&
    8019FA639063|
    8122027E4DC6|
    826919E96B2&
    832562E96D0C|
    9012AA7DE138|
    9124A674A66C&
    9227B3F54983|
    9310AE29D0DB&
    10016599470CB|
    101243B2E3FA0&
    1029A354CC6F&
    10313516AF8C4|
    1105ADE11D33|
    11110860D95F2&
    11226BC2731A4&
    11330CCD12BAA&
    1209BA518E95&
    1211622F7583A&
    122286C0A5FE8&
    123248FAC2D74&
    13027D129E934&
    131611DCE4C9&
    1327362F2F4A|
    133156CCB630D&
    140197919D88|
    14113823F95AC|
    1421567C99A98|
    14318E91D0CB&
    15023AB796817&
    15128356459A7&
    15212668D9FA8|
    15320D4DBF40|
    160281ACCE5D8&
    16114F53B24C1|
    162156DB89876&
    163125C965DA5|


  5. Изменена процедура расширения ключа. В 128-битном алгоритме NUSH фрагменты исходного ключа K0...Kn-1 (n – размер ключа шифрования в 32-битных словах) используются в итерациях (ниже i – сквозной номер итерации, начиная с 0), а также в начальном и финальном преобразованиях следующим образом:

    ПрименениеИспользуемый фрагмент ключа (в зависимости от его размера)
    128 бит192 бита256 бит
    KS0K3K2K4
    KS1K2K3K5
    KS2K1K4K6
    KS3K0K5K7
    KF0K1K5K5
    KF1K0K4K4
    KF2K3K3K7
    KF3K2K2K6
    KRiKi mod n


    256-битный вариант

    256-битный вариант алгоритма, по сути, имеет те же отличия от 64-битного варианта:

    1. Количество раундов алгоритма увеличено до 33.
    2. Субблоки имеют размер по 64 бита, а операции сложения и вычитания выполняются по модулю 264.
    3. Используются другие константы c и s согласно следующей таблице:

      РаундИтерацияsc
      00121A028E3B458FE65F
      014510CB1C5CAC3C7A75
      0270AA54C8D55CC6F5E
      0348EE4AC8B12E2FC8D5
      1014F787D15C240344D7
      1143CACCAF60F2998693
      1284EA93E4DF9558E82
      1354B57CDA0316BC1C92
      2049623C7496C0D6FB68
      2147BD7B065E84D852A9
      2237A6CD2E5C6B1A30E7
      2355788D9EFC078281B5
      3058D0CF11A8FF9943E4
      3132D04F01C7F3EA8E96
      32165313F574E5D1D2C8
      3336DC8AB4437AAD50CF
      401366ED63D790921A4D
      4135FA351C5183EBDA0B
      4250DA694B14554D17C9
      43580A392FA5DE785CD1
      502175B1D5DE6561D08C
      5156BC128DB2F22C591E
      524D19F06A961BC6E36
      5352F3F2D208215DDA85
      6032D9A5D482F930B1AF
      6119FD98B3A189AD9851
      6228B671A790FB204AE3
      63104E3B9DB2A290EC98
      70632CA2AFB114DF74A2
      7153705CE63837B3616D
      7250679D058EAL89A2EE
      73278398BAB59E3A506C
      8018181F8AEFD8499AD4
      814017C41D9833728FE9
      82137E692E4DB9D09471
      8314C900CDE6CB8AA557
      908EB2B8576C0419FE3
      9121927C3FE32C9A2365
      926427410EB1EACBE4F
      935918A6FE2878B4D78D
      10017436EB84357C5342F
      10151B94C23F94C24B3E
      10223D3D831585E585A9C
      10310F37E22A1587B9670
      1103296A27FA6164197CD
      11120C21BC4EAF449AC7E
      11253BCCE8974A35A69D4
      11337FA98C9B495C2782
      120203B64D65041406FFB
      12142AF82F6418C48F7DC
      122113B7D80A170E6AB6
      1235809DFC1BBF5A51842
      1301245B2F2934E2BECC4
      13130F456D827335C90D3
      132387A2C6EE4672634D8
      13363AA0D9523BBBD398
      14023D578F2AEA135F841
      141619A6635DA5227B8E9
      1427F40F12A5B07BC3D8
      14312BBD16B68649B4271
      15033042753CE1B63F27B
      15141A471D892D743F58D
      15217B6CACF5958204C67
      15335FB7786E2234AA30A
      1603097EB25E4C9F33038
      1613CD5D27E1802E58F4
      162600289FBE8CE5BD06A
      1635526DBAA50CBC1E8B9
      170374116B2B8D89AFF86
      171501D658D6EEF814E49
      17212A4B511D2427E3F73
      17341E2A77BD9898E1326
      180765DEA88074B941FD
      181408E55B0DC3CEE4398
      18235C14E2ADD6601EBDC
      18345A24F31D25E456E34
      1902AD83615AC0E7AEAE
      1914481FCC39F84A54A8B
      1924D15C7E21FE235136
      193495F5AC08E5A961B43
      200290CEC9543F2A66676
      201127C034EBA929A8B8E
      20256C0F4CE12EC988EBB
      203185D358844AE5699F9
      2105942E8D74DB4919B52
      211218250D178F5557F8A
      21245532394E648E4F3FC
      213603E2BF92B03691AD8
      22012FA9268E710647D5B
      22162BBD56F8408E2E651
      22259793C3027EB0C5B8C
      223517643D2BB11326B87
      230204B9FF22BB56211E4
      23142AA39E9382F34B664
      2326E212D331BFE06A72
      233271755736EA478F948
      240159CA19F718A53EAA
      24117F44B30FA21C0A6ED
      2422471F47E295DA0855C
      243515036E2EE9C4166B9
      250326D32721CF1269E70
      2514C51E826355EC445F
      252260E8E66931EF37C41
      253469A94B3039660D3DE
      26021ED158ECD9D68529
      26110ECE52DC8F1C3952
      2623886A20A1FFFC847E5
      26312FF1DADC90C09A612
      2707B896156E08C55F6D
      27141644DEA351C86F456
      2724529B4B572556F360D
      27337875399911A5A79D1
      2802432EC6F05BC921BA5
      28110CE0FB52C15C61A97
      28247F4E15212953F03D
      2832873CA0565BBEC3E8
      2906CDF1B94C29B3812F1
      29118AAAEA6E308E92F68
      2929703CCA8345EC51FC
      293524618BB1B1B33EF0C
      3008F039732AAD11FE46
      3015786D89114CE8DE23F
      3021330AEDC7E44B8AF0
      3033196D7869EDD33E500
      31035F59CC3B1E9354045
      31133AD3DB4F4A1AA8433
      31211724ECE1C833975EA
      3131698516AB5C5303E6E
      3206ACF4FD043B90CCB6
      321138D8A1DA51BE5CEC1
      3221511D0127B77B9427B
      3234567C2DE1924CAA5ED

      Что касается логических операций #, то они выполняются в той же последовательности, что и для 128-битного алгоритма. В раундах, которые отсутствуют в 128-битном варианте, используются операции согласно следующему правилу:

      #i = #i mod 64,

      где i – сквозной номер итерации.

    4. Фрагменты исходного ключа используются в преобразованиях алгоритма согласно следующей таблице (в данном случае ключ делится на 64-битные слова):

      ПрименениеИспользуемый фрагмент ключа (в зависимости от его размера)
      128 бит192 бита256 бит
      KS0K1K2K3
      KS1K0K1K2
      KS2K1K0K1
      KS3K0K2K0
      KF0K0K1K2
      KF1K1K2K3
      KF2K0K2K0
      KF3K1K0K1
      KRiKi mod n

    Криптоанализ алгоритма

    Против 128- и 256-битных вариантов алгоритма NUSH применима та же атака, что и против 64-битного варианта [11]. Атака, предложенная китайскими учеными Ву Венлинг (Wu Wenling) и Фенг Денггуо (Feng Dengguo), позволяет методом линейного криптоанализа вычислить, например, 256-битный ключ 128-битного варианта алгоритма при наличии 2126 известных открытых текстов выполнением 264 операций шифрования. Аналогичные атаки существуют и для 256-битного варианта, и для других размеров ключей.

    Поскольку данные атаки говорят о недостаточном запасе криптостойкости алгоритма NUSH, 192- и 256-битные варианты алгоритма также не вышли во второй раунд конкурса NESSIE [8].

    Алгоритм Q

    Так же, как и рассмотренные в прошлой части алгоритмы Anubis и Grand Cru, алгоритм Q наследует структуру и часть преобразований от алгоритма Rijndael. Соответственно, алгоритм представляет 128-битный блок данных в виде байтового массива 4 * 4, над которым и выполняются преобразования.

    Алгоритм, теоретически, не ограничивает размер используемых ключей шифрования ни сверху, ни снизу. Однако, в рамках конкурса NESSIE рассматривалось только три фиксированных размера ключа: 128, 192 и 256 бит.

    Автор алгоритма – Лесли МакБрайд (Leslie McBride) из компании Mack One Software (США). На конкурс NESSIE была представлена версия 2.0 алгоритма Q, которая и описана ниже.

    Стоит отметить, что спецификация алгоритма Q [6], по сравнению, например, с подробнейшими описаниями рассмотренных в этой части статьи алгоритмов NUSH [5] и SC2000 [10], недостаточно детально описывает данный алгоритм. Кроме того, некоторые эксперты (см., например, [4]) отмечают наличие противоречий в данной спецификации. Поэтому ниже приведено лишь краткое описание алгоритма Q.

    Структура алгоритма

    В каждом раунде алгоритма выполняются следующие операции [6]:

    1. Первое наложение ключа (операция KA). Выполняется побитовой логической операцией «исключающее или» (XOR), которая применяется к каждому биту обрабатываемого блока и соответствующему биту фрагмента расширенного ключа для данной операции.
    2. Первая табличная замена BS1. Используемая здесь таблица взята в неизменном виде из алгоритма Rijndael, как и таблица замен алгоритма Grand Cru. Данная таблица приведена в предыдущей части статьи.
    3. Второе наложение ключа (операция KB). Аналогично KA, наложение выполняется с помощью операции XOR.
    4. Вторая табличная замена BS2. Данная операция унаследована от алгоритма Serpent, подробно описанного в [12].
    5. Третье наложение ключа (операция KN). Отличие данной операции от KA и KB состоит в том, что они используют один и тот же фрагмент расширенного ключа во всех раундах, тогда как подключ, используемый в операции KN, уникален для каждого раунда алгоритма.
    6. Операция CS – побайтный циклический сдвиг каждого (кроме первого) столбца массива данных. j-й столбец массива сдвигается на j бит вверх.
    7. Третья табличная замена BS3. Также унаследована от алгоритма Serpent.

    Количество раундов R алгоритма определено в его описании [6] как 8 для обычных применений или 9 в случаях, когда требуется усиленная защита.

    Общая структура алгоритма такова:

    1. Сначала выполняется предварительное отбеливание, т.е. наложение на данные фрагмента ключа для предварительного отбеливания, которое выполняется абсолютно аналогично операции KA.
    2. Затем выполняется R описанных выше раундов преобразований.
    3. Наконец, выполняется заключительное преобразование, состоящее из последовательно выполняемых операций KA, BS1 и KB, после чего выполняется финальное отбеливание. Финальное отбеливание аналогично предварительному, за исключением того, что в нем используется другой фрагмент ключа.

    Расшифрование выполняется практически аналогично зашифрованию, за исключением следующего:

    1. При расшифровании меняются местами операции KN и CS.
    2. Используются инверсные таблицы замен.
    3. Раундовые ключи используются в обратной последовательности.

    Криптоанализ алгоритма

    Результаты исследований алгоритма Q в рамках конкурса NESSIE оказались весьма неутешительными: алгоритм подвержен как дифференциальному [1, 2], так и линейному криптоанализу [4]. Поэтому Q не был выбран во второй раунд конкурса [7].

    Алгоритм SC2000

    Алгоритм SC2000 разработан в 2000 г. группой японских специалистов из компании Fujitsu и Университета г. Токио.

    SC2000 имеет три фиксированных размера ключа шифрования: 128, 192 и 256 бит.

    Структура алгоритма

    Алгоритм представляет собой SP-сеть; в нем выполняется 7 раундов преобразований при использовании 128-битного ключа или 8 раундов при использовании ключей больших размеров. Раунд алгоритма имеет достаточно сложную структуру; первый раунд показан на рис. 1.

    1-й раунд алгоритма SC2000
    Рис. 1. 1-й раунд алгоритма SC2000

    В нем выполняются следующие операции [10]:

    1. Входное 128-битное значение делится на 4 субблока по 32 бита, на каждый из которых операцией XOR накладывается соответствующий 32-битный фрагмент расширенного ключа (процедура расширения ключа будет описана ниже), в данном случае – фрагменты k0...k3.
    2. Затем выполняется операция T(), которая переразбивает блок данных на 32 субблока по 4 бита каждый. Переразбиение выполняется так (см. рис. 2):
      Операция T() алгоритма SC2000
      Рис. 2. Операция T() алгоритма SC2000
      i-й 4-битный субблок (обозначим его oi) формируется из четырех i-х бит субблоков a, b, c и d.
    3. Каждый 4-битный субблок «прогоняется» через таблицу замен S4, которая заменяет входное 4-битное значение выходным того же размера согласно следующей таблице:

      2510127151111360948314

      т.е., значение 0 заменяется значением 2, 1 меняется на 5 и т.д.

    4. Обрабатываемый блок данных снова переразбивается на 32-битные субблоки с помощью операции T’(), которая, фактически, является обратной к операции T() – см. рис. 3 (на рисунке 4-битные субблоки обозначены как t0...t31).

      Операция T’() алгоритма SC2000
      Рис. 3. Операция T’() алгоритма SC2000
    5. Выполняется наложение операцией XOR еще четырех фрагментов расширенного ключа; для первого раунда – это фрагменты k4...k7.
    6. Значения субблоков C и D (а также маскирующая константа M5 = 555555552) подаются на вход функции F(), которая будет подробно описана ниже. В результате выполнения данной функции получаются два 32-битных значения, которые накладываются операцией XOR на субблоки A и B.
    7. Субблоки A и B меняются местами, соответственно, с субблоками C и D, после чего повторно выполняется шаг 6.

    Упомянутая выше функция F() обрабатывает два входных 32-битных субблока следующим образом (см. рис. 4):

    Функция F() алгоритма SC2000
    Рис. 4. Функция F() алгоритма SC2000
    1. Каждое из входных 32-битных значений разбивается на 6 фрагментов, два из которых являются 6-битными, а остальные имеют размер по 5 бит.
    2. 6-битные фрагменты прогоняются через таблицу замен S6, а 5-битные обрабатываются таблицей S5. Таблица S6 выглядит так:

      47592542152328392538361960242956
      37632061552304491062253485111
      6252351814460541740274318512
      31641343374549505812143573213

      S5 определена следующим образом:

      20267311912101522301314424918
      2711121616228235830172925

      Принцип действия данных таблиц аналогичен S4.

    3. Полученные после замены значения снова объединяются в 32-битные субблоки, каждый из которых обрабатывается операцией M(); данная операция выполняет умножение 32-битного входного значения (представленного в виде вектора) на матрицу размером 32 х 32 бит, которая определена следующим образом :
      D0C19225A5A2240A1B84D250B728A4A1
      6A70490285DDDBE6766FF4A4ECDFE128
      AFD13E94DF837D09BB27FA52695059AC
      52A1BB58CC322F1D1844565BB4A8ACF6
      342354386847A851E48C0CBBCD181136
      9A112A0C43EC6D0E87D8D27D487DC995
      90FB9B4BA1F63697FC513ED978A37D93
      8D16C5DF9E0C8BBE3C381F7CE9FB0779
    4. На первое из 32-битные значений, полученных после обработки субблоков операцией M(), логической побитовой операцией «и» (&) накладывается маскирующая константа (на рис. 4 обозначенная M). На второе значение аналогичным образом накладывается константа M’ – побитовый комплемент к M.
    5. Два выходных значения (обозначим их Out1 и Out2) получаются в результате следующих действий:

      Out1 = (V1 & M) V2,
      Out2 = (V2 & M’) V1,

      где V1 и V2 – значения, полученные после обработки 32-битных субблоков операцией M().

    Как было сказано выше, в алгоритме выполняется 7 раундов преобразований при использовании 128-битных ключей или 8 раундов, если используются ключи размером 192 или 256 бит. В каждом раунде используется по 8 различных 32-битных фрагментов расширенного ключа. Раунды незначительно различаются между собой в следующем:

    1. В каждом четном раунде (считая, что раунды нумеруются с 1-го) вместо описанной выше маскирующей константы M5 используется константа M3 = 33333333 (шестнадцатеричное значение).
    2. В последнем раунде не выполняются шаги 6 и 7 описанной выше последовательности действий для первого раунда.

    Расшифрование

    Расшифрование данных алгоритмом SC2000 весьма похоже на зашифрование, за исключением следующих отличий:

    1. Фрагменты расширенного ключа применяются в обратной последовательности, т.е. в первом раунде (при использовании 128-битного ключа) операцией XOR накладываются сначала подключи k52...k55, а затем – k48...k51 и т.д. в следующих раундах расшифрования.
    2. Маскирующие константы используются в обратной последовательности, т.е. M3 в нечетных раундах и M5 – в четных.
    3. Вместо таблицы S4 используется обратная ей таблица, которая выглядит следующим образом:

      1060141219413112738155

    Расширение ключа

    Расширение ключа выполняется в два этапа: сначала на основе ключа шифрования вычисляется промежуточный ключ, после чего из промежуточного ключа вычисляется требуемое количество фрагментов расширенного ключа.

    Прежде всего, ключ шифрования используется для инициализации начального ключевого массива uk0...uk7 следующим образом:

    • 256-битный ключ просто разбивается на 32-битные фрагменты uk0...uk7;
    • 192-битный ключ делится на фрагменты uk0...uk5, два остальных фрагмента инициализируются так:

      uk6 = uk0;
      uk7 = uk1.
    • 128-битный ключ разбивается на фрагменты uk0...uk3, фрагменты uk4...uk7 эквивалентны фрагментам uk0...uk3.

    Затем вычисляется набор промежуточных ключей: a0...a2, b0...b2, c0...c2 и d0...d2. Все они вычисляются с помощью процедуры генерации промежуточных ключей, показанной на рис. 5.

    Процедура генерации промежуточных ключей алгоритма SC2000
    Рис. 5. Процедура генерации промежуточных ключей алгоритма SC2000

    Данная процедура повторяется 12 раз по количеству вычисляемых промежуточных ключей. Входные и выходные параметры данной процедуры определяются согласно следующей таблице:

    Вход 1Вход 2Вход 3Выход
    4 * iuk0uk1ai, i = 0, 1, 2
    4 * i + 1uk2uk3bi, i = 0, 1, 2
    4 * i + 2uk4uk5ci, i = 0, 1, 2
    4 * i + 3uk6uk7di, i = 0, 1, 2

    Для каждой группы промежуточных ключей в цикле по i = 0...2 процедура выполняет следующие действия:

    1. Каждый из трех входов обрабатывается функцией S(), которая осуществляет «прогон» 32-битного фрагмента данных через описанные выше таблицы замен S5 и S6 – см. рис. 4.
    2. Результаты предыдущего шага обрабатываются описанной выше функцией M().
    3. Первый из фрагментов, полученных на предыдущем шаге (т.е. результат обработки функциями S() и M() первого входа), складывается со вторым по модулю 232.
    4. Третий из фрагментов, полученных на шаге 2, умножается на значение i + 1 по модулю 232.
    5. Результаты шагов 3 и 4 объединяются операцией XOR.
    6. Результат предыдущего шага обрабатывается функцией S(), а затем – функцией M(), в результате чего получается выходное значение.

    После этого из промежуточного ключа вычисляются фрагменты расширенного ключа выполнением в цикле по n от 0 до 55 (для 192- и 256-битных ключей шифрования – в цикле от 0 до 63) процедуры, показанной на рис. 6. В качестве входных значений процедура берет 4 различных фрагмента промежуточного ключа (будет описано ниже), над которыми выполняются следующие действия:

    • 1-е входное значение циклически сдвигается влево на 1 бит.
    • Аналогично сдвигается 3-е входное значение.
    • Результат шага 1 складывается со вторым входным значением по модулю 232.
    • Из результата шага 2 вычитается модулю 232 четвертое входное значение.
    • Результат предыдущего шага циклически сдвигается влево на 1 бит.
    • Результаты шагов 3 и 5 объединяются операцией XOR, что и дает выходное значение.

    Выходным значением данной процедуры является n-й 32-битный фрагмент расширенного ключа. Входные значения определяются следующими таблицами, первая из которых определяет группу промежуточных ключей (т.е. ai, bi, ci или di), из которой берется конкретное входное значение:

    tВход 1Вход 2Вход 3Вход 4
    0aibicidi
    1biaidici
    2cidiaibi
    3dicibiai
    4aicidibi
    5bidiciai
    6ciaibidi
    7dibiaici
    8aidibici
    9biciaidi
    10cibidiai
    11diaicibi

    Параметр t определяется из n следующим образом:

    t = (n + n / 36) mod 12.

    Вторая таблица определяет индекс i фрагмента промежуточного ключа для конкретного входа:

    n mod 9Вход 1Вход 2Вход 3Вход 4
    00000
    11111
    22222
    30101
    41212
    52020
    60202
    71010
    82121

    Криптоанализ алгоритма

    Алгоритм SC2000 не вышел во второй раунд конкурса NESSIE – с одной стороны, у алгоритма достаточная криптостойкость (известны лишь методы вскрытия вариантов алгоритма SC2000 с уменьшенным числом раундов – например, описанные в [3] и [9]) и неплохое быстродействие. С другой стороны, алгоритм имеет весьма сложную структуру, преимущества которой недостаточно убедительно обоснованы в спецификации алгоритма. Опасаясь скрытых слабостей и возможных недокументированных особенностей алгоритма, эксперты не выбрали данный алгоритм во второй раунд [7].

    Заключение

    Здесь были описаны только те алгоритмы-участники конкурса NESSIE, которые не вышли в его финал. Примерно столько же алгоритмов блочного симметричного шифрования вышло в финал конкурса, где в условиях жесткой конкуренции было выбрано несколько победителей конкурса. Однако, все это – тема отдельной статьи.

    1. Biham E., Dunkelman O., Furman V., Mor T. Preliminary Report on the Nessie Submissions: Anubis, Camellia, Khazad, IDEA, Misty1, NIMBUS, and Q. // http://www.cosic.esat.kuleuven.be. – Technion, Haifa, Israel.
    2. Biham E., Furman V., Misztal M., Rijmen V. Differential Cryptanalysis of Q. // http://citeseer.ist.psu.edu. – February 11, 2001.
    3. Dunkelman O., Keller N. Boomerang and Rectangle Attacks on SC2000. // http://citeseer.ist.psu.edu. – July 3, 2001.
    4. Keliher L., Meijer H., Tavares S.E. High Probability Linear Hulls in Q. // http://www.cosic.esat.kuleuven.be.
    5. Lebedev A.N., Volchkov A.A. NUSH. Cryptographic Algorithms Based upon the Block Cipher Called «NUSH». // http://www.cosic.esat.kuleuven.be. – LAN Crypto, Int., Moscow, Russia.
    6. McBride L. Q – A Proposal for NESSIE. v2.00. // http://www.cosic.esat.kuleuven.be – Mack One Software, Galveston, USA.
    7. Preneel B., Bosselaers A., Ors S.B., Biryukov A., Granboulan L., Dottax E., Murphy S., Dent A., White J., Dichtl M., Pyka S., Serf P., Biham E., Barkan E., Dunkelman O., Ciet M., Sica F., Knudsen L., Raddum H. NESSIE Public Report D18: Update on the selection of algorithms for further investigation during the second round. // http://www.cosic.esat.kuleuven.be. – Version 1.0 – March 11, 2002.
    8. Preneel B., Van Rompay B., Granboulan L., Martinet G., Murphy S., Shipsey R., White J., Dichtl M., Serf P., Schafheutle M., Biham E., Dunkelman O., Ciet M., Quisquater J-J., Sica F., Knudsen L., Raddum H. NESSIE Phase I: Selection of Primitives. // http://www.cryptonessie.org. – 23 September 2001.
    9. Raddum H., Knudsen L.R. A Differential Attack on Reduced-Round SC2000. // http://citeseer.ist.psu.edu. – University of Bergen – 30th April 2001.
    10. Shimoyama T., Yanami H., Yokoyama K., Takenaka M., Itoh K., Yajima J., Torii N., Tanaka H. Specification and Supporting Document of the Block Cipher SC2000. // http://www.cosic.esat.kuleuven.be – 2000.
    11. Wenling W., Dengguo F. Linear cryptanalysis of NUSH block cipher. // http://www.scichina.com – Chinese Academy of Sciences – 2002.
    12. Панасенко С.П. Алгоритмы шифрования – финалисты конкурса AES. Часть 1. // iXBT.com. – http://www.ixbt.com/soft/alg-encryption-aes.shtml – 24.08.2006 г.


Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.