Это не официальный сайт wikipedia.org 01.01.2023

SQUARE — Википедия

SQUARE

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

SQUARE
Создатель Винсент Рэймен,
Йоан Даймен,
Ларс Кнудсен
Создан 1997
Опубликован 1997
Размер ключа 128 бит
Размер блока 128 бит
Число раундов 8
Тип Подстановочно-перестановочная сеть

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

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

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

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

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

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

  • a i , j   — значение байта, находящегося в i  -й строке и j  -м столбце в квадрате данных;
  • b i , j   — новое значение байта в квадрате;
  • c n   — набор констант;
  • умножения выполняются в поле Галуа G F ( 2 8 )  ;

Важно, что поле G F ( 2 8 )   имеет характеристику 2, то есть операция сложения соответствует побитовому x o r  . Каждая i  -ая строка в квадрате может быть представлена в виде полинома a i ( x ) = a i , 0 a i , 1 x a i , 2 x 2 a i , 3 x 3  . Тогда, определяя коэффициенты c n   как полином c ( x ) = j c j x j  , преобразование θ   можно представить в виде произведения полиномов: b i ( x ) = c ( x ) a i ( x ) mod 1 x 4  , здесь b i ( x )   — новое значение строки квадрата, представленное в виде полинома, и c ( x ) = 2 1 x 1 x 2 3 x 3   . Обратному преобразованию θ 1   соответствует полином d ( x )  , определённый по формуле c ( x ) d ( x ) = 1 ( mod 1 ) x 4  .[2]

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

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

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, и так далее.[1]

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

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

Сложение с ключом раунда σ [ K i ]  Править

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

  • a   и b   — значение 128 бит данных перед преобразованием и после;
  • K i   — ключ раунда i  .[2]

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

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

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

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

  • k 0 , i + 1 = k 0 , i r o t l ( k 3 , i ) C i  ;
  • k 1 , i + 1 = k 1 , i k 0 , i + 1  ;
  • k 2 , i + 1 = k 2 , i k 1 , i + 1  ;
  • k 3 , i + 1 = k 3 , i k 2 , i + 1  ;

где:

  • k n , i   — n  -я строка байтового квадрата ключа i  -го раунда;
  • C i   — константа для i  -го раунда, вычисляемая по формуле C i + 1 = 2 C i  , C 0 = 1  ;
  • r o t l ( )   — операция циклического сдвига байтовой строки на один байт влево: r o t l [ a i , 0 , a i , 1 , a i , 2 , a i , 3 ] = [ a i , 1 , a i , 2 , a i , 3 , a i , 0 ]  ;

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

ШифрованиеПравить

Обозначим один раунд шифрования как ρ [ k t ] = σ [ k t ] π γ θ  . Также, восьми раундам преобразования предшествует сложение с ключом σ [ K 0 ]   и θ 1  : S q u a r e [ k ] = ρ [ k 8 ] ρ [ k 7 ] ρ [ k 6 ] ρ [ k 5 ] ρ [ k 4 ] ρ [ k 3 ] ρ [ k 2 ] ρ [ k 1 ] σ [ k 0 ] θ 1  .[2]

РасшифрованиеПравить

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

S q u a r e 1 [ k ] = θ σ 1 [ k 0 ] ρ 1 [ k 1 ] ρ 1 [ k 2 ] ρ 1 [ k 3 ] ρ 1 [ k 4 ] ρ 1 [ k 5 ] ρ 1 [ k 6 ] ρ 1 [ k 7 ] ρ 1 [ k 8 ]  ,

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

S q u a r e 1 = ρ [ k 8 ] ρ [ k 7 ] ρ [ k 6 ] ρ [ k 5 ] ρ [ k 4 ] ρ [ k 3 ] ρ [ k 2 ] ρ [ k 1 ] σ [ k 0 ] θ  .[2]

БезопасностьПравить

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

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

Описание Square-атакиПравить

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

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

x , y Λ : { x i , j y i , j , f o r ( i , j ) λ x i , j = y i , j , f o r ( i , j ) λ  .

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

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

b = θ ( a ) , a Λ b i , j = a Λ k c j k a i , k = l c l a Λ a i , l + j = l c l 0 = 0 ,  

значит байты на выходе θ   в четвёртом раунде уравновешены по Λ  -множеству. Эта уравновещенность нарушается последующим применением γ  . Выходные байты четвёртого раунда могут быть выражены с помощью функции от промежуточного состояния b  : a i , j = S γ [ b j , i ] k i , j 4  . Предполагая значение k i , j 4  , значение b j , i   для всех элементов Λ  -множества могут быть вычислены из шифротекстов. Если значение этого байта оказалось неуравновешенным по Λ  , то предположенное значение ключа k i , j 4   является ложным. Этот метод криптоанализа позволил взломать 6-раундовый вариант шифра с использованием 2 32   блоков открытого текста и соответствующих им блоков шифротекста и выполнением 2 72   операций шифрования.[2]

В 2010 году была представлена атака на связанных ключах методом бумеранга. Ранее подобная атака применялась к шифрам KASUMI, COCONUT98, IDEA и AES-192/256. Это была первая атака на полнораундовый SQUARE.[4] В 2011 году был проведён криптоанализ полнораундового варианта SQUARE с помощью полного двудольного графа. Данный тип атаки позволил взломать шифр с использованием одного ключа, 2 48   открытых текстов и проведения 2 126   операций шифрования.[5]

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

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

См. такжеПравить

ПримечанияПравить

ЛитератураПравить

СсылкиПравить