Дипломная работа: Интегральная атака против блочного симметричного шифра Crypton
Шифр Crypton, как и Square, эффективно реализуется на разнообразных платформах, и признано, что в корейском алгоритме присутствуют талантливые конструктивные идеи.
1.3.1 Алгоритм CRYPTON
Описание алгоритма было взято из книги автора шифра CRYPTON Че Хун Лим [16] В CRYPTON, каждый блок данных 128 бит представлен в форме массива 4´4 байта. Циклическое преобразование в CRYPTON состоит из четырех шагов: byte-wise substitutions(байт замена), column-wise bit permutation(колончастый способ перестановки битов), column-to-row transposition (перенос столбцов), и key addition(добавление ключа). Процесс кодирования состоит из 4 раундов таких циклических преобразований. Процесс расшифровки может быть сделан идентичным процессу кодирования с различным ключевым списком. На рисунке 1.1 показана структура CRYPTON.
Рис.1.1 Структура CRYPTON.
Блочный шифр CRYPTON имеет следующие характеристики:
- 12-раундовый самозаменяемый шифр (с одинаковыми процессами для кодирования и расшифрования) с длиной блока 128 битов и длинной ключа до 256 битов.
- хорошая стойкость от существующих атак.
- эффективен и на программном и на аппаратном уровне: благодаря высокой степени паралельности и использованию очень простых логических операций ANDS/XORS, CRYPTON запускается очень быстро на большинстве платформ как в программном обеспечении так и в аппаратных средствах.
- Быстрое формирование ключей: шифрование со списоком ключей идет намного быстрее чем шифрование с одним блоком, так что это очень эффективно в приложениях, требующих частые замены ключей (например, в хеш-режиме).
1.3.2 Основные преобразования блока
1.3.2.1 Байтовая подстановка g
CRYPTON использует нелинейную замену байта, используя четыре 8´8 S-блока, Si(0 ≤i ≤3). Эти S-блоки получены из одного 8´8 S-блока при возведении в степень S (то есть, S = S-1) и удовлетворяют обратные отношения S2=S0-1 и S3=S1-1. Возведенный в степень S-блок S был, сформирован для более эффективной логической реализации.
Преобразование S-блока состоит из замен байт относительно массива 4´4 байт. Два различных преобразования используются альтернативно в последовательных раундах: в нечетных раундах и e в нечетных раундах. Это показано на рисунке 1.2. Заметим, что эти четыре S-блока устроены так, что следующее закрепляются на любом 4´4 байте масива A:
go (ge (A)) = ge (go (A)) = A. (1.1)
Это свойство используется, чтобы получить идентичный процесс для кодирования и расшифровки.
A[0] |
a03 |
a02 |
a01 |
a00 |
B[0] |
S3(a03) |
S2(a02) |
S1(a01) |
S0(a00) |
|||
A[1] |
a13 |
a12 |
a11 |
a10 |
o |
B[1] |
S0(a13) |
S3(a12) |
S2(a11) |
S1(a10) |
||
A[2] |
a23 |
a22 |
a21 |
a20 |
Þ | B[2] |
S1(a23) |
S0(a22) |
S3(a21) |
S2(a20) |
||
A[3] |
a33 |
a32 |
a31 |
a30 |
B[3] |
S2(a33) |
S1(a32) |
S0(a31) |
S3(a30) |
|||
A[0] |
a03 |
a02 |
a01 |
a00 |
B[0] |
S1(a03) |
S0(a02) |
S3(a01) |
S2(a00) |
|||
A[1] |
a13 |
a12 |
a11 |
a10 |
e |
B[1] |
S2(a13) |
S1(a12) |
S0(a11) |
S3(a10) |
||
A[2] |
a23 |
a22 |
a21 |
a20 |
Þ | B[2] |
S3(a23) |
S2(a22) |
S1(a21) |
S0(a20) |
||
A[3] |
a33 |
a32 |
a31 |
a30 |
B[3] |
S0(a33) |
S3(a32) |
S2(a31) |
S1(a30) |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8