SQUARE

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Карточка блочного шифра SQUARE — в криптографии симметричный блочный криптоалгоритм, разработанный в 1997 году Винсентом Рэйменом, Йоаном Дайменом и Ларсом Кнудсеном.

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

Описание алгоритма

Алгоритм SQUARE использует ключ длиной 128 бит, данные шифруются 128-битными блоками, однако модульный подход к построению шифра позволяет легко расширить до больших размеров длину ключа и длину блока данных. Один раунд SQUARE состоит из четырёх отдельных преобразований. Данные представляются байтовым квадратом размера 4x4. Основные составляющие этого шифра — это пять различных обратимых преобразований, которые воздействуют на массив байтов размера 4×4.Шаблон:Sfn

Преобразования в раунде шифрования

Линейное преобразование θ

Линейное преобразование θ воздействует на каждую строку в квадрате данных. Оно представляется формулой bi,j=cjai,0cj1ai,1cj2ai,2cj3ai,3, где:

  • ai,j — значение байта, находящегося в i-й строке и j-м столбце в квадрате данных;
  • bi,j — новое значение байта в квадрате;
  • cn — набор констант;
  • умножения выполняются в поле Галуа GF(28);

Важно, что поле GF(28) имеет характеристику 2, то есть операция сложения соответствует побитовому xor. Каждая i-ая строка в квадрате может быть представлена в виде полинома ai(x)=ai,0ai,1xai,2x2ai,3x3. Тогда, определяя коэффициенты cn как полином c(x)=jcjxj, преобразование θ можно представить в виде произведения полиномов: bi(x)=c(x)ai(x)mod1x4, здесь bi(x) — новое значение строки квадрата, представленное в виде полинома, и c(x)=21x1x23x3 . Обратному преобразованию θ1 соответствует полином d(x), определённый по формуле c(x)d(x)=1(mod1)x4.Шаблон:Sfn

Нелинейное преобразование γ

Данное преобразование является табличной заменой γ. Таблица, по которой осуществляется замена:

B1 CE C3 95 5A AD E7 02 4D 44 FB 91 0C 87 A1 50
CB 67 54 DD 46 8F E1 4E F0 FD FC EB F9 C4 1A 6E
5E F5 CC 8D 1C 56 43 FE 07 61 F8 75 59 FF 03 22
8A D1 13 EE 88 00 0E 34 15 80 94 E3 ED B5 53 23
4B 47 17 A7 90 35 AB D8 B8 DF 4F 57 9A 92 DB 1B
3C C8 99 04 8E E0 D7 7D 85 BB 40 2C 3A 45 F1 42
65 20 41 18 72 25 93 70 36 05 F2 0B A3 79 EC 08
27 31 32 B6 7C B0 0A 73 5B 7B B7 81 D2 0D 6A 26
9E 58 9C 83 74 B3 AC 30 7A 69 77 0F AE 21 DE D0
2E 97 10 A4 98 A8 D4 68 2D 62 29 6D 16 49 76 C7
E8 C1 96 37 E5 CA F4 E9 63 12 C2 A6 14 BC D3 28
AF 2F E6 24 52 C6 A0 09 BD 8C CF 5D 11 5F 01 C5
9F 3D A2 9B C9 3B BE 51 19 1F 3F 5C B2 EF 4A CD
BF BA 6F 64 D9 F3 3E B4 AA DC D5 06 C0 7E F6 66
6C 84 71 38 B9 1D 7F 9D 48 8B 2A DA A5 33 82 39
D6 78 86 FA E4 2B A9 1E 89 60 6B EA 55 4C F7 E2
Преобразование π

то есть 0 заменится на B1, 1 — на CE, и так далее.Шаблон:Sfn

Байтовая перестановка π

Байтовая перестановка осуществляет транспонирование байтового квадрата, то есть ai,j=aj,i.

Сложение с ключом раунда σ[Ki]

Эта операция — побитовое сложение 128 бит данных с ключом раунда, b=aKi, где:

  • a и b — значение 128 бит данных перед преобразованием и после;
  • Ki — ключ раунда i.Шаблон:Sfn

Процедура получения ключей

Для шифрования необходимо получить 8 128-битных ключей раундов, а также ключ для предварительного раунда из ключа шифрования алгоритма.

Процедура ψ получения ключей.

Процедура получения ключа описывается преобразованием ψ:Ki+1=ψ(Ki), выполняющимся над ключом, представленным, как и блок данных, байтовым квадратом 4x4. Преобразование ψ описывается следующими операциями:

  • k0,i+1=k0,irotl(k3,i)Ci;
  • k1,i+1=k1,ik0,i+1;
  • k2,i+1=k2,ik1,i+1;
  • k3,i+1=k3,ik2,i+1;

где:

  • kn,i — n-я строка байтового квадрата ключа i-го раунда;
  • Ci — константа для i-го раунда, вычисляемая по формуле Ci+1=2Ci, C0=1;
  • rotl() — операция циклического сдвига байтовой строки на один байт влево: rotl[ai,0,ai,1,ai,2,ai,3]=[ai,1,ai,2,ai,3,ai,0];

Исходный ключ алгоритма шифрования используется как ключ для предварительного раунда.Шаблон:Sfn

Шифрование

Обозначим один раунд шифрования как ρ[kt]=σ[kt]πγθ. Также, восьми раундам преобразования предшествует сложение с ключом σ[K0] и θ1:Square[k]=ρ[k8]ρ[k7]ρ[k6]ρ[k5]ρ[k4]ρ[k3]ρ[k2]ρ[k1]σ[k0]θ1.Шаблон:Sfn

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

Алгоритм расшифрования аналогичен алгоритму шифрования, но вместо преобразований γ и θ используются обратные преобразования γ1 и θ1, при этом γ1 — это обратная табличная замена, а θ1 — это умножение строки на полином d(x) такой, что d(x)c(x)=1(mod1x4), также в предварительном раунде используется преобразование θ вместо θ1. Из формулы для шифрования видно, что

Square1[k]=θσ1[k0]ρ1[k1]ρ1[k2]ρ1[k3]ρ1[k4]ρ1[k5]ρ1[k6]ρ1[k7]ρ1[k8],

где ρ1[kt]=θ1γ1π1σ1[kt]=θ1γ1πσ[kt]. Так как γ1π=πγ1, и, более того, так как θ1(a)kt=θ1(a+θ(kt)), получаем σ[kt]θ1=θ1σ[θ(kt)]. Теперь один раунд для расшифрования можно определить как ρ[kt]=σ[kt]πγ1θ1, и полная формула для расшифрования записывается как :

Square1=ρ[k8]ρ[k7]ρ[k6]ρ[k5]ρ[k4]ρ[k3]ρ[k2]ρ[k1]σ[k0]θ.Шаблон:Sfn

Безопасность

Исследование криптостойкости создателями алгоритма

Алгоритм обладает высокой стойкостью против линейного и дифференциального криптоанализа, благодаря преобразованиям θ и γ, которые понижают максимальную вероятность появления дифференциальных следов и максимальную корреляцию линейных следов за 4 раунда преобразований. Первый криптоанализ SQUARE был проведён его авторами с использованием интегрального криптоанализа, который позже стал известен как Square-атака.Шаблон:Sfn

Описание Square-атаки

Прежде всего, введем несколько определений:

Определение 1: Пусть Λ-множество — набор из 256 16-байтовых состояний, каждое из которых отличается от других в некоторых байтах, которые назовём активными, и совпадают в некоторых байтах, которые будем называть пассивными. Далее, λ — это набор индексов активных байтов.Шаблон:Sfn Имеем:

x,yΛ:{xi,jyi,j,for(i,j)λxi,j=yi,j,for(i,j)λ.

Определение 2: Если применение операции исключающего «или» ко всем байтам на одной позиции в Λ-множестве даёт 0, то эта позиция называется уравновешенной по Λ-множеству.Шаблон:Sfn

Применение преобразований γ и σ[kt] к Λ-множеству даёт Λ-множество с тем же λ. Применение преобразования π даёт Λ-множество, в котором активные байты транспонированы (относительно активных байтов в исходном Λ-множестве). Также, применение θ к Λ-множеству необязательно вернёт Λ-множество, однако, так как каждый выходной байт θ является линейной комбинацией четырёх входных байт в той же строке, то, подавая строку с всего одним активным байтом, на выходе получим строку состоящую только из активных байт. Шаблон:Sfn Рассмотрим Λ-множество, в котором только один байт является активным и проследим, как изменяется позиция активного байта в течение трех раундов (здесь предварительный раунд объединён с первым: ρ[k1]σ[k0]θ1, который в итоге записывается как σ[k1]πγθσ[k0]θ1=σ[k1]πγσ[θ(k0)]). Так как первый раунд не содержит θ, то к началу второго раунда остается один активный байт. Во втором раунде θ преобразует в строку активных байтов, которые π преобразует в столбец активных байт. θ в третьем раунде переводит результат в Λ-множество, состоящее только из активных байт. Значения байт на выходе третьего раунда пробегают все возможные значения, следовательно, уравновешены по множеству Λ, имеем

b=θ(a),aΛbi,j=aΛkcjkai,k=lclaΛai,l+j=lcl0=0,

значит байты на выходе θ в четвёртом раунде уравновешены по Λ-множеству. Эта уравновещенность нарушается последующим применением γ. Выходные байты четвёртого раунда могут быть выражены с помощью функции от промежуточного состояния b: ai,j=Sγ[bj,i]ki,j4. Предполагая значение ki,j4, значение bj,i для всех элементов Λ-множества могут быть вычислены из шифротекстов. Если значение этого байта оказалось неуравновешенным по Λ, то предположенное значение ключа ki,j4 является ложным. Этот метод криптоанализа позволил взломать 6-раундовый вариант шифра с использованием 232 блоков открытого текста и соответствующих им блоков шифротекста и выполнением 272 операций шифрования.Шаблон:Sfn

В 2010 году была представлена атака на связанных ключах методом бумеранга. Ранее подобная атака применялась к шифрам KASUMI, COCONUT98, IDEA и AES-192/256. Это была первая атака на полнораундовый SQUARE.Шаблон:Sfn В 2011 году был проведён криптоанализ полнораундового варианта SQUARE с помощью полного двудольного графа. Данный тип атаки позволил взломать шифр с использованием одного ключа, 248 открытых текстов и проведения 2126 операций шифрования.Шаблон:Sfn

Особенности шифра

Шифр SQUARE создавался, соответствуя стратегии широкого следа — каждый раунд шифра состоит из нескольких преобразований, нелинейной перестановки и композиции линейных преобразований — что дало шифру высокую криптостойкость против линейного и дифференциального криптоанализа. Составляющие блоки алгоритма и их взаимодействие подбирались также исходя из возможности быстрой реализации на широком спектре процессоров.[1] Реализация алгорима на языке Си имела скорость шифрования 2.63 Мбайт/с, запускаемая на процессоре Pentium с частотой 100 МГц, а реализация на языке Ассемблер увеличивала скорость шифрования вдвое. Данный алгоритм получил развитие и стал основой нового американского стандарта — шифра Rijndael, который был разработан группой авторов SQUARE. Кстати, на конкурсе AES, эксперты отметили, что «в основе алгоритма Rijndael лежит нетрадиционная парадигма, поэтому он может содержать скрытые уязвимости»Шаблон:Sfn. Именно по этой причине сам SQUARE сейчас используется редко, уступая в популярности своему потомку — Rijndael. Также потомком шифра является южнокорейский алгоритм CRYPTON, участник конкурса AES.

См. также

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Симметричные криптоалгоритмы