WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
CRYPTON
Создатель Че Хун Лим (Future Systems, Inc.)
Создан 1998 г.
Опубликован 1998 - 1999
Размер ключа 128, 192, 256 бит
Размер блока 128 бит
Число раундов 12
Тип Подстановочно-перестановочная сеть

CRYPTON — алгоритм симметричного блочного шифрования (размер блока 128 бит, ключ длиной до 256 бит), разработанный южнокорейским криптологом Че Хун Лим (англ. Chae Hoon Lim) из южнокорейской компании Future Systems, с конца 1980-х годов работающая на рынке сетевого обеспечения и защиты информации. Алгоритм был разработан в 1998 году в качестве шифра — участника конкурса AES. Как признавался автор, конструкция алгоритма опирается на алгоритм SQUARE.

В алгоритме Crypton нет традиционных для блочных шифров сети Фейстеля. Основу данного шифра составляет так называемая SP-сеть (повторяющаяся цикловая функция из замен-перестановок, ориентированная на распараллеленную нелинейную обработку всего блока данных). Кроме высокой скорости, преимуществами таких алгоритмов является облегчение исследования стойкости шифра к методам дифференциального и линейного криптоанализа, являющимся на сегодня основными инструментами вскрытия блочных шифров.

На конкурс AES была изначально представлена версия алгоритма Crypton v0.5. Однако, как говорил Че Хун Лим, ему не хватало времени для разработки полной версии. И уже в первом этапе конкурса AES в ходе анализа алгоритмов, версия Crypton v0.5 была заменена на версию Crypton v1.0. Отличие новой версии от первоначальной заключались в изменении таблиц замен, в модификации процесса расширения ключа.

Структура алгоритма. Основные характеристики

Как и другие участники конкурса AES, Crypton предназначен для шифрования 128-битовых блоков данных. При шифровании используются ключи шифрования нескольких фиксированных размеров — от 0 до 256 бит с кратностью 8 битов.

Структура алгоритма Crypton — структура «Квадрата» — во многом похожа на структуру алгоритма Square, созданного в 1997 году. Криптографические преобразования для алгоритмов с данной структурой могут быть выполнены как над целыми строками и столбцами массива, так и над отдельными его байтами. (Стоит отметить, что алгоритм Square был разработан авторами будущего победителя конкурса AES — авторами алгоритма Rijndael — Винсентом Рэйменом и Йоаном Дайменом.)

Шифрование

Алгоритм Crypton представляет 128-битовый блок шифруемых данных в виде байтового массива 4×4, над которыми в процессе шифрования производится несколько раундов преобразований. В каждом раунде предполагается последовательное выполнение следующих операций:

  • Табличная замена ;
  • Линейное преобразование ;
  • Байтовая перестановка ;
  • Операция .

Табличная замена

Табличная замена

Алгоритм Crypton использует 4 таблицы замен. Каждая из которых замещает 8-битовое входное значение на выходное такого же размера.

Вычисление производных таблиц замен (<<n - есть циклический сдвиг влево значения обрабатываемого байта на n битов)

Все таблицы являются производными от основной таблицы (см. рисунок - вычисление производных таблиц замен).

Ниже представлен пример таблиц:

Таблица :

63ec59aadb8e66c0373c14ff1344a991
3b788defc22af0d7619ea5bc48151247
ed421a3338c81790a6d55d656afe8fa1
93c22f0c6858dff44511a0a72296fb7d
1db484e0bf57e90a4e83cc7a7139c732
743dde5085066f53e8ad8219e1ba36cb
0e28f39b4a62941fbdf66741d8d12da4
86b701c5b07502f92c296ed2f58bfc5a
e47fdd0755b12b8972183a4cb6e380ce
49cf6bb9f20ddc649546f7109a20a23f
d687703e21fd4d7b3cae098a04b354f8
300056d4e725bbac9873eac99d4f7e03
ab92a8430ffa245c1e603197cdc679f5
5ee534761c81b2af0b5dd9e2276dd088
c151e69c77be9923daeb522eb508056c
b81ba3698cd34026f1c49f35ee7c4b16

Таблица

8db365aa6f3a9903dcf050ff4c11a646
ece136bf0ba8c35f857a96f22154481d
b70968cce0235c429a577595a9fb3e86
4e2bbc30a1617fd31544829e885aEff5
74d21283fe5da728390e33e9c5e41fc8
d1f47b411618bd4da3b60a6487ead82f
38a0cf6e2989527cf6db9d056347b492
1ade0417c2d508e7b0a4b94b7d2ef369
93fd771c55c6ac26c960e831da8f023b
253fade6cb3473915619df406a808afc
5b1ec1f884f735ed0fba242a10ce51e3
c00059539f94eeb262cdab27763df90c
ae4aa20d3ceb90717881c45e371be5d7
7997d0d97006cabe2c6d678b9cb54322
07459b72ddfa668c6baf49b8d62014b1
e26c8ea5324f0198c7137ed4bbf12d58

Таблица

b17276bfacee5583edaa47d8339560c4
9b391e0c0a1dff26895b22f1d440c867
9da43ce7c6b5f7dc61791586786eeb32
b0ca4f23d2fb5e08244d8a100951a39f
f66b21c30d38991f1c9064fe8ba648bd
53e1ea57ae84b24535027fd9c72ad07c
c9186500972b066a34f32c92efdd7a56
a2c488b95075d3e411ce4ba7fd3fbe81
8ed55a49425470a1df87ab7df412052e
270fc13066983dcbb8e69c63e3bc19fa
3a2f9ef26f1a283bc20e03c0b759a9d7
7485d6ad41ec8c71f0935db61b68e544
07e0148af973cd4e25bb315f4acc8f91
de6d7bf5b329a0176cdae80496825236
435cdb8d80d1e2b45846bae90120fc13
16f8946237cf699aaf77c53e7ea52d0b

Таблица :

b1f68e07726bd5e076215a14bfc349a8
ac0d42f9ee385473559970cd831fa14e
ed1cdf25aa9087bb4764ab31d8fe7d5f
338bf44a95a612cc6048058fc4bd2e91
9b5327de39e10f6d1eeac17b0c5730f5
0aae66b31d849829ffb23da02645cb17
8935b86c5b02e6da227f9ce8f1d96304
d4c7e396402abc82c8d01952677cfa36
9dc93a43a4182f5c3c659edbe700f28d
c6976f80b52b1ad1f70628e2dc6a3bb4
6134c25879f30e46152c03ba8692c0e9
78efb7016edd5920eb7aa9fc3256d713
b0a27416ca4c85f84f88d69423b9ad62
d2504137fb75eccf5ed38c6908e4719a
2411f0af4dce93778a4b5dc510a7b63e
09fd1b7e513f68a5a3bee52d9f81440b

В четных раундах используется операция , в нечетных - . Эти операции и таблицы замен обладают рядом свойств, которые важны, особенно для унификации операций шифрования и расшифрования. Свойства таблиц и операций:

где  — текущее значение блока шифруемых данных. Операции и можно определить следующим образом:

где:

  •  — текущее значение конкретного байта данных;
  •  — значение байта данных после выполнения операции;

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

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

Здесь используется 4 специальных константы, шестнадцатеричные значения которых указаны ниже:

Эти константы объединены в маскирующие последовательности, перечисленные ниже:

где  — операция конкатенации.

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

где:

  •  — логическая побитовая операция «и»;
  • и  — значение i-ой строки обрабатываемых данных до и после выполнения операции соответственно.

В четных раундах используется операция :

Фактически эта операция обеспечивает наличие в каждом результирующем байте каждого столбца двух битов каждого исходного байта того же столбца.

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

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

Данная перестановка преобразует простейшим образом строку данных в столбец:

Операция

Побитовое сложение всего массива данных с ключом раунда

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

где:  — новое значение блока шифруемых данных;  — ключ текущего раунда .

Заметим, именно 12 раундов шифрования рекомендуется автором алгоритма Че Хун Лимой, однако строгое количество раундов не установлено. Кроме 12 раундов шифрования, перед первым раундом алгоритма выполняется предварительная операция , а по завершении 12 раундов выполняется выходное преобразование , состоящее из последовательно выполняемых операций , и .

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

Расшифрование выполняется применением обратных операций в обратной последовательности. Все операции, кроме и являются обратными самим себе, а сами и связаны следующими соотношениями:

поэтому при расшифровании  — используется в четных раундах, а  — в нечетных.

Стоит отметить ещё одну особенность: каждый этап может быть выполняется параллельно, что важно при реализации на современных многоядерных и мультипоточных системах. Алгоритм имеет структуру SP-сети, как и Rijndael (который является победителем конкурса AES) Также особенностью шифра является то, что для зашифрования и расшифрования может использоваться одна и та же процедура, но с разными подключами. Алгоритм эффективен как при программной, так и при аппаратной реализации. Шифр достаточно быстр — на конкурсе AES при использовании компилятора Borland C показал наилучшие результаты среди всех участников.

Процедура расширения ключа

Алгоритм Crypton требует наличие 128 — битового ключа для каждого раунда, а также 128 битового ключа для предварительной операции σ. Расширение ключа происходит в два этапа:

  1. на первом этапе происходит формирование восьми расширенных ключей;
  2. на втором этапе происходит вычисление ключей раундов из расширенных ключей.

Формирование расширенных ключей

Формирование расширенных ключей происходит так:

  • Если ключ шифрования имеет размер, меньший 256 бит, он дополняется битовыми нулями, пока не достигнет 32-байтового исходного ключа :
  • Ключ K разбирается на последовательности и , первая из которых содержит только четные байты ключа, вторая — только нечетные:
  • Над последовательностями и выполняется один раунд шифрования алгоритма Crypton с использованием ключа раунда, состоящего из нулевых битов. Соответственно для выполняются преобразования нечетного раунда, для происходит преобразование четного раунда. Результирующие последовательности обозначаются как и .
  • Происходит вычисление 8 расширенных ключей:

для где и  — последовательности, которые определяются следующими формулами:

Вычисление ключей раундов

Для вычисления из расширенных ключей — ключей раундов, используются следующие константы:

Заметим, что псевдослучайные константы A54FF53A и 3C6EF372 получаются из дробных частей от чисел и соответственно.

Сначала вычисляются ключи для предварительной операции σ и первого раунда:

где  — i-ая строка ключа раунда . Как и для шифруемых данных, ключ предоставляется в виде таблицы..

Представление ключа в виде таблице аналогично шифруемым данным

Константы вычисляются путём побитового циклического сдвига каждого байта константы на 1 бит влево.

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

  • Выполняется модификация первых четырёх расширенных ключей:

где знаком <<< обозначена операция побитового циклического сдвига каждого байта (раздельно) расширенного ключа на указанное число битов влево, а << — побитового циклического сдвига всего ключа на указанное число битов влево.

  • Вычисление ключа раунда с помощью модифицированных расширенных ключей:

Аналогично происходит вычисление ключей для нечетных раундов:

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

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

Недостатки алгоритма Crypton

При анализе исходной версии алгоритма, Crypton v0.5, сразу двое экспертов независимо обнаружили класс слабых ключей: таковых оказалось 2 в степени 32 256-битовых ключей. Также, была обнаружена атака на шестираундовую версию алгоритма Crypton, похожая на атаку на алгоритм Square. Это было одной из причин появления новой версии алгоритма — Crypton v1.0.

Достоинства алгоритма Crypton

Однако по мнению экспертов института NIST, вышеперечисленные недостатки не являются грубыми. Кроме того, плюсов у алгоритма было вполне достаточно:

  1. алгоритм эффективен на программном и аппаратном уровне благодаря высокой степени параллельности и использованию очень простых логических операций ANDS/XORS;
  2. алгоритм не подвержен атакам по времени выполнения и потребляемой мощности;
  3. хорошая стойкость к существующим атакам;
  4. возможность распараллеливания операций в процессе шифрования;
  5. быстрое расширение ключа, быстрое формирование ключей: шифрование со списоком ключей идет намного быстрее чем шифрование с одним блоком, так что это очень эффективно в приложениях, требующих частые замены ключей (например, в хеш-режиме).
  6. достаточно высока скорость на всех целевых платформах;
  7. небольшие требования к оперативной памяти и возможность расширения ключа «на лету» позволяют использовать алгоритм Crypton в смарткартах с минимальными ресурсами;
  8. алгоритм поддерживает дополнительные размеры ключей, помимо тех, что были установлены конкурсом (128, 192, 256 битов).

Разработчиком была заявлена гарантированная устойчивость к линейному и дифференциальному криптоанализу и, в целом, всем существующим на момент разработки атакам. Переработанное ключевое расписание и новые таблицы S-Box исключили все обнаруженные недостатки и уязвимости.

Интегральная атака на шифр Crypton (4-х раундовый)

Анализ безопасности блочно-симметричного шифра (БСШ) Crypton показывает, что 12-раундовый самозаменяемый шифр (с одинаковыми процессами для кодирования и расшифрования) с длиной блока 128 битов и длиной ключа до 128 битов обладает хорошей стойкостью к существующим атакам. Интегральная атака на 4-х раундовый БСШ Crypton намного эффективнее, чем полный перебор по всему ключевому пространству.

Краткое описание шифра

Crypton представляет собой блочный шифр. Длина ключа и длина блока 128 бит. Четыре преобразования работают с промежуточным результатом, называемым Состоянием (State). Состояние можно представить в виде прямоугольного массива из 16 байт:

где

Обозначим столбец из 4 байт как

Так же представим ключ шифрования:

где и .

В шифре определено поле Галуа , элементами которого являются байты. Байты рассматриваются как многочлены над

Операция сложения  — при сложении байт соответствующие им многочлены складываются над .

Операция умножения — при умножении соответствующие им многочлены перемножаются над и результирующий многочлен берется по модулю от простого многочлена

В процессе работы алгоритма, ключ расширяется (Key Schedule, Key Expansion). Первые 4 столбца (по 4 байта) являются исходным ключом . Каждый последующий -й набор из 4 столбцов вычисляется из предыдущего набора и используется для -го раунда, обозначим его . Раунд состоит из четырёх различных элементарных преобразований, которые преобразуют состояние в состояние  :

  • Замена байт — BS (Byte Substitution): применение перестановки или
  • Сдвиг строк — SR (Shift Rows): циклический сдвиг байт по правилу:
  • Замешивание столбцов — MC (Mix Columns: каждый столбец состояния изменяется линейным преобразованием

Иначе говоря, это есть ничто иное, как умножение столбцов на матрицу слева:

Операция обратима :

  • Добавление раундового ключа — KA (Key Addition): к текущему состоянию прибавляется раундовый ключ.

Финальный раунд не содержит операции MC. Формулы, связывающие состояния и :

;
;

Алгоритм реализации интегральной атаки

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

Введем определения.

 — набор из 256 входных блоков (массивов State), каждый из которых имеет байты (назовем их активными), значения которых различны для всех 256 блоков. Остальные байты (пассивные) остаются одинаковыми для всех 256 блоков из -набора. То есть для любых то если байт с индексом (i, j) активный и иначе .

 — c k активными байтами.
 — множество состояний в конце раунда r.


-набор. После элементарных преобразований BS и KA блоки -набора дадут в результате другой -набор с активными байтами в тех же позициях, что и у исходного. Преобразование SR сместит эти байты соответственно заданным в ней смещениям. После преобразования MC -набора в общем случае необязательно останется -набором (результат операции может перестать удовлетворять определению -набора). Так как каждый байт результата MC является линейной комбинацией (с обратимыми коэффициентами) четырёх входных байт того же столбца , то столбец с единственным активным байтом на входе даст в результате на выходе столбец со всеми четырьмя активными байтами.

Рассмотрим шифрование -набора. Во всех блоках будет активен только один байт. Значение этого байта различно во всех 256 блоках, а остальные байты одинаковы. В первом раунде преобразование MC преобразует один активный байт в столбец из 4 активных байт, то есть является . Во втором раунде эти 4 байта разойдутся по 4 различным столбцам в результате преобразования SR, является -набором. Преобразование MC следующего, третьего раунда преобразует эти байты в 4 столбца, содержащие активные байты. Этот набор все ещё остается -набором до того момента, когда он поступает на вход MC третьего раунда.

Основное свойство -набора — поразрядная сумма по модулю 2 ( ) всех байтов, находящихся на одних и тех же местах, по всему набору равна нулю (поразрядная сумма неактивных (с одинаковыми значениями) байт равна нулю по определению операции « », а активные байты, пробегая все 256 значений, также при поразрядном суммировании дадут нуль)

Результат преобразования MC в третьем раунде байтов входного массива данных в байты выходного массива данных  — поразрядная сумма всех блоков выходного набора будет равна нулю:

Таким образом есть . Полная сумма данных на входе равна нулю. Это равнество нарушается последующим преобразованием BS.

Ключ однозначно задается в R представлении:

Для проведения атаки потребуется множество , состоящее из 256 состояний. Множество можно получить применением 2 обратных преобразований SR и MC из входных данных шифра .

Схема базовой интегральной атаки на 4-раундовый Crypton:

Для всех

для

если ,

то

В этой схеме инвертируется 4-й раунд шаг за шагом, чтобы получить байты , полная сумма которых равна 0. При сумма

Если предполагаемое значение байта ключа было верно, то оно будет включено в возможные варианты на место . Большая часть неверных значений байта будет отсеяно. За счет того, что поиск может производиться отдельно (параллельно) для каждого байта ключа, скорость подбора всего значения раундового ключа весьма велика. Далее по значению можно найти , а потом и  — исходный ключ.

Конкурс AES

Первыми шагами навстречу изменению стандартов шифрования было создание конкурса AES. Это был открытый конкурс, проводимый институтом стандартов и технологий США — NIST (National Institute of Standart and Technology). Победитель этого конкурса должен был стать новым стандартом шифрования США. В конкурсе могли принимать частные лица, компании как внутри США так и за пределами страны.

Основные требования:

  1. 128 бит — размер блока шифруемых данных.
  2. Три или более размеров ключей должно поддерживаться алгоритмом (128, 256, 192 — бит — обязательные размеры ключей для конкурса).

Однако несмотря на малое количество требований для алгоритмов, было много пожеланий:

  1. алгоритм должен быть стоек от криптоаналитических атак, известных на момент проведения конкурса;
  2. структура алгоритма должна быть ясной, простой и обоснованной;
  3. должны отсутствовать слабые и эквивалентные ключи;
  4. скорость шифрования данных должна быть высокой на всех потенциальных аппаратных платформах от 8 до 64 битовых.
  5. структура алгоритма должна позволять распараллеливать операции в многопроцессорных системах и аппаратных реализациях.
  6. алгоритм должен предъявлять минимальные требования к оперативной и энергонезависимой памяти.
  7. не должно быть ограничений на использование алгоритмов.

Заметим, что участникам конкурса AES разрешалось вносить изменения в алгоритмы в ходе конкурса, если это незначительные модификации. Для алгоритма Crypton при предоставлении новой версии, жюри сочли изменения значительными, так как они касались таблицы замен, процедуру расширения ключа. В результате, на конкурсе участвовала версия Crypton v0.5.

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

Версии алгоритма Crypton

В конкурсе участвовала первичная редакция алгоритма, которая получила индекс 0.5 через некоторое время. Через некоторое время было предложено ещё несколько редакций, последней из которой стала версия 1.0 с переработанным ключевым расписанием и новыми таблицами подстановки.

Примечания

    Литература

    • Chae Hoon Lim. CRYPTON: a new 128-bit Block Cipher–Specification and Analysis. — 1998. DOI:10.1.1.52.5771.
    • Алгоритмы Шифрования. Специальный Справочник/ Автор: Сергей Петрович Панасенко/ Изд: «БХВ-Санкт-Петербург», 2009

    Ссылки

    Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

    Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

    Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




    Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

    Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

    2019-2024
    WikiSort.ru - проект по пересортировке и дополнению контента Википедии