Interested Article - SHARK

SHARK ( англ. Secure Hash Algorithm Regenerative Keys — безопасный хеширующий алгоритм с воссоздающимися ключами) — симметричный алгоритм блочного шифрования , разработанный группой криптографов, среди которых Винсент Рэймен , — автор шифра AES . В теории позволяет использовать блоки и ключи различной длины, однако авторская реализация использует 128-битный ключ и 64-битные блоки. Структура схожа со структурой подстановочно-перестановочной сети .

История SHARK

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

Авторы позиционировали SHARK как алгоритм, призванный заменить широко распространенный в то время шифр DES . К новому алгоритму были предъявлены следующие требования:

  • высокая производительность — небольшое число раундов. Для сравнения, в шифре DES использовалось 16 раундов. По словам автором, им удались достичь более чем четырёхкратного ускорения по сравнению с шифрами SAFER и IDEA ;
  • неуязвимость для линейного и дифференциального криптоанализа, для которых был уязвим DES .

Хотя до этого уже существовали шифры на основе SP-сети ( MMB, SAFER , 3-Way ), SHARK впервые использовал MDS-коды для линейного преобразования, а именно коды Рида-Соломона .

Существует два варианта шифра SHARK : SHARK-A ( англ. affine transform ) и SHARK-E ( англ. exor ), получившие название благодаря различным способам введения раундовых ключей .

Дизайн алгоритма

Концептуальная схема шифра SHARK

Алгоритм SHARK состоит из трех компонентов:

  • нелинейный слой — основан на S-блоках ;
  • слой диффузии — основан на MDS-кодах ;
  • расписание ключей для получения раундовых ключей из исходного ключа .

Каждый компонент алгоритма рассматривается отдельно и каждый должен обладать определёнными свойствами. Так, слой диффузии должен обладать равномерными и хорошими диффузионными свойствами. Нелинейный слой также должен обладать равномерными нелинейными свойствами, причем компоненты алгоритма независимы в следующем смысле: при изменении реализации, например, нелинейного слоя (одни S-блоки заменяются другими S-блоками c такими же характеристиками), защищенность алгоритма остается неизменной. Такая стратегия является вариантом Wide trail strategy , описанной в докторской диссертации Йоана Даймена .

SHARK состоит из раундов, дополнительного слоя добавления ключа и дополнительно слоя инвертированной диффузии. Каждый раунд, в свою очередь, состоит из добавления ключа, нелинейной замены и слоя диффузии. Дополнительный слой добавления ключа нужен для того, чтобы злоумышленник не смог отделить последний раунд. Дополнительный слой инвертированной диффузии необходим для упрощения операции дешифрования .

Слой нелинейный замены состоит из S-блоков, каждый из которых представляет собой -битную перестановку. Таким образом, алгоритм способен шифровать блоки длиной .

Слой диффузии

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

  • Линейный контекст — нет корреляции между линейной комбинации небольшого набора -битных входных данных и линейной комбинации небольшого набора ( -битных) выходных данных.
  • Разностный контекст — небольшое изменение входных данных влечет значительное изменение данных на выходе, и наоборот, для небольшого изменения выходных данных нужно значительно изменить входные данные .

Пусть — обратимое линейное преобразование , — элемент поля , расстояние Хэмминга , тогда количественно лавинный эффект оценивается числом скачка ( англ. branch number ) .

Если , то . называют оптимальным числом скачка ( англ. optimal branch number ). В основной статье авторы показали, что с помощью MDS-кодов можно сконструировать обратимое линейное преобразование с оптимальном числом скачка. В реализации используются коды Рида-Соломона .

Нелинейный слой (блоки подстановок)

Нелинейные S-блоки обеспечивают защиту от линейного и дифференциального криптоанализов. Одним из важных численных характеристик безопасности шифра служит матрица эксклюзивных ИЛИ ( англ. exor table ) отображения , элементы которой определяются по формуле , где — обозначает число удовлетворяющих условию элементов, — элементы поля . Большие значения элементов матрицы могут привести к восприимчивости шифра к дифференциальной атаке .

Авторами были выбраны S-блоки, основанные на отображении над полем . В этом случае при четном матрица обладает следующими свойствами:

  • Дифференциальная 4-стабильность — все элементы матрицы не превосходят 4. В действительности, в каждой строке такой матрицы присутствует ровно один элемент, равный 4, а остальные равны 2 либо 0.
  • Минимальное расстояние аффинной функции равно .
  • Нелинейный порядок любой линейной комбинации выходных битов равен .

Для того чтобы удалить фиксированные точки и , используется обратимое аффинное преобразование выходных бит .

Расписание ключей

Расписание ключей ( англ. key scheduling ) позволяет расширить исходный ключ , получив раундовых ключей . Хорошее планирование позволяет получить раундовые ключи с максимальной энтропией. Авторами предлагаются два способа ввести раундовый ключ:

  1. Exor — простое исключающее ИЛИ с входными данными в каждом раунде. Соответствующий алгоритм — SHARK-E.
  2. Affine Transformation — aффинное преобразование входных данных, зависящее от ключа. Соответствующий алгоритм — SHARK-A .

Exor

Вычисляется простое исключающее ИЛИ входных бит раунда и подключа. Преимущества метода — быстрота и стабильность: никакой ключ не является сильнее или слабее другого. Недостаток метода — энтропия раундового ключа не превосходит .

Affine Transformation

Пусть — невырожденная матрица над полем , зависящая от ключа (точнее, от его расширения). Введем ключевую операцию над входными данными следующим образом: . Это линейная операция, потому она не вводит слабых ключей. Кроме того, энтропия раундовых ключей увеличивается до . Однако, это довольно дорогая в смысле производительности операция, поэтому авторами предлагается ограничить на подпространстве диагональных матриц . В этом случае энтропия раундовых ключей становится близкой к .

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

В алгоритме SHARK , генерация раундовых ключей осуществляется следующим образом:

  1. раундовых -битных ключей инициализируются первыми записями в ( англ. substitution table ).
  2. Матрицы инициализируются единичными матрицами .
  3. Выбранный пользователем ключ конкатенируется сам с собой до тех пор, пока не будет иметь длину бит.
  4. К полученной в п. 3 последовательности применяется алгоритм SHARK в режиме CFB .
  5. Первые бит выходных данных используются для формирования раундовых ключей .
  6. Последние бит выходных данных интерпретируются как элементов поля , и формируют диагональные элементы матриц . Если какой-нибудь элемент равен нулю, то он отбрасываются, а все следующие элементы сдвигаются вниз на единицу. Дополнительные зашифрованные нулевые строки добавляются в конец, чтобы заполнить оставшиеся диагональные элементы .

Механизм генерации подключей в принципе позволяет использовать ключ длины бит, но авторы рекомендуют использовать ключ, не превышающий 128 бит .

Заметки по реализации

Таблицы замещений

Для того, чтобы добиться высокой производительности, слой диффузии и блоки подстановок объединяются в одну операцию . Пусть обозначают входные данные раунда; — выходные данные; — матрицы перестановок (S-блоки); — матрица, определяющая слой диффузии; и — обозначают сложение и умножение над полем . Тогда

Используя расширенные таблицы замещений размерности , определяемые по формуле , можно записать преобразование в простом виде:

Таким образом, один раунд требует поисков по таблице и бинарных операций. Однако, из-за того что при длине блока бит таблицы занимают байт, алгоритм для блоков длины 128 бит и более оказывался неэффективным для большинства процессоров того времени (1996 год), отсюда происходит существующее ограничение на длину блока в 64 бит ( ) .

Матрица MDS-кода

Для можно построить матрицу, определяющую слой диффузии, на основе кода Рида-Соломона .

Дешифрование

Для описания дешифрования рассмотрим 2-х раундовую версию SHARK . Пусть — линейная операция, — нелинейная замена, — операция добавления ключа для раундового ключа . Функция шифрования, в таком случае, равна , где — комбинированная из слоя диффузии и S-блоков операция. Так как операция добавления ключа и операция диффузии — линейные операции, их порядок можно поменять местами :

,

где введено обозначение

Применим полученную формулу к :

Теперь покажем, что операция дешифрования имеет ту же структуру. Для этого сначала обратим операцию шифрования :

Меняя местами операцию добавления ключа и операцию диффузии, получаем ту же структуру, что и в операции шифрования :

Известные атаки

На текущий момент не обнаружено уязвимостей у классической реализации алгоритма. Существуют атаки только на вариации алгоритма:

  • В 1997 году и Ларс Кнудсен показали, что 64-битная реализация SHARK-E ( SHARK с exor стратегией введения раундового ключа) теоретически уязвима для интерполяционной атаки при ограничении на количество раундов до 5, а также 128-битная реализация — при ограничении до 8 раундов. Но они также показали, что для достаточной безопасности необходимо по крайней мере 6 раундов .
  • В 2013 году Янг Ши ( англ. Yang Shi ) и Хонгвей Фан ( англ. Hongfei Fan ) показали, что White-Box реализация SHARK недостаточно безопасна и может быть взломана с фактором работы примерно 1.5 * (2 ^ 47) .

Примечания

  1. Винсент Рэймен , Йоан Даймен , Барт Пренель , Антун Боссэлерс, Эрик де Вин. : PDF . 9 августа 2017 года.
  2. Винсент Рэймен , Йоан Даймен . : PDF . — С. 161—165 . 27 августа 2017 года.
  3. Йоан Даймен . : PDF . 16 мая 2018 года.
  4. MDS-коды — коды с наибольшим кодовым расстоянием
  5. . Дата обращения: 16 декабря 2017. 28 января 2012 года.
  6. , Ларс Кнудсен . . Springer International Publishing AG (17 мая 2006). Дата обращения: 9 февраля 2018. 14 декабря 2017 года.
  7. White-box attack context — злоумышленник имеет полный доступ к программной реализации шифра.
  8. Yang Shi, Hongfei Fan. . Дата обращения: 14 декабря 2017. 14 декабря 2017 года.

Литература

  • Vincent Rijmen, Joan Daemen, Bart Preneel, Antoon Bosselaers, Erik De Win The Cipher SHARK. — от 14 декабря 2017 на Wayback Machine .
  • Joan Daemen, Vincent Rijmen The Design of Rijndael. — от 14 декабря 2017 на Wayback Machine .
  • Thomas Jakobsen, Lars R. Knudsen The interpolation attack on block ciphers. — от 14 декабря 2017 на Wayback Machine .
  • Yang Shi, Hongfei Fan On Security of a White-Box Implementation of SHARK. — от 14 декабря 2017 на Wayback Machine .
  • Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. . — CRC Press, 1996. — С. 281. — 810 с. — ISBN 9781439821916 .

Ссылки

Источник —

Same as SHARK