В рубрику "Криптография" | К списку рубрик | К списку авторов | К списку публикаций
Все попытки использовать клеточные автоматы в конструкции блочных шифров непосредственно в качестве цикловой функции шифрования упирались прежде всего в вопрос обратимости КлА2. Если автомат является обратимым, обратное преобразование может быть реализовано также с помощью КлА (возможно с другой, в том числе и с большей окрестностью по сравнению с исходным автоматом) [Ric72].
Наиболее существенные результаты, связанные с вопросами обратимости, получены для классических КлА, заданных на бесконечных решетках. В работе [Amo72] было показано, что для одномерных КлА задача алгоритмического распознавания обратимости является разрешимой. В той же работе был построен алгоритм распознавания, имеющий экспоненциальную сложность. Позже были построены алгоритмы для распознавания обратимости одномерных КлА, имеющие полиномиальную сложность [Sut91], [Sut98], [Cul87], [Hil91]. Однако для клеточных автоматов на решетках с двумя и более измерениями таких алгоритмов нет. Было установлено [Kar90], [Kar94], что в общем случае эта задача является алгоритмически неразрешимой в том смысле, что не существует алгоритма, который для любого автомата всегда заканчивал бы свою работу в конечное время и давал бы правильный ответ. В работах [Куч04], [Куч12] исследовались границы между классами клеточных автоматов, для которых свойство обратимости является алгоритмически разрешимым, и теми, для которых оно алгоритмически неразрешимо. Получен критерий разрешимости свойства обратимости для классов клеточных автоматов фиксированной размерности и с фиксированным числом состояний ячейки. Получен критерий разрешимости свойства обратимости в классе клеточных автоматов с фиксированной окрестностью (в терминологии автора [Куч12] – с фиксированным шаблоном соседства).
Построение обратимых КлА в случае размерностей больших, чем 1, весьма затруднительно. Известно несколько типов обратимых двумерных КлА, основными из которых являются блочные клеточные автоматы [Tof87], [Scf08] и клеточные автоматы 2-го порядка [Mar84], [Vic84], [Wol84a]. Автоматы этих типов отличаются от классических клеточных автоматов, однако доказано, что они могут быть эмулированы классическими клеточными автоматами (с, возможно, значительно большим размером окрестности и числом состояний ячейки).
Для криптографических приложений, как правило, применяются КлА с решеткой конечного размера. Вопросы обратимости для таких КлА в принципе всегда разрешимы, и основная задача состоит в нахождении приемлемых критериев для проверки обратимости, алгоритмов для реализации обратного преобразования и оценки сложности этих алгоритмов. В настоящее время эти вопросы весьма мало исследованы, результатов очень немного, а те, какие есть, не внушают большого оптимизма относительно быстрого продвижения и скорых успехов в этом направлении. Так, проводились попытки исследовать свойство обратимости двумерных КлА на множестве конфигураций, помещающихся в некоторый квадрат. В работе французского исследователя Б. Дюранда (Durand B.) было установлено, что задача распознавания обратимости в этой постановке является co-NP-полной [Dur94].
В свою очередь, для обобщенных КлА, как показано в [Клю12б], задача восстановления предыдущего состояния (а значит, и начального заполнения) обобщенного клеточного автомата является NP-трудной. Там же показано, что в случае КлА с локальной функцией связи от двух переменных задача о существовании предыдущего состояния принадлежит классу P.
Несмотря на отсутствие разработанной теории построения обратимых КлА с решеткой конечного размера, в последнее время предложено достаточно много блочных алгоритмов шифрования на основе обратимых КлА, в том числе и двумерных – [Ang07], [Kum13], [Per08], [Ser04a], [Ser04b], [Tri09], [Wel12], [Xia09]. Кроме того, имеется значительное число работ, посвященных использованию КлА для построения S-блоков [Bha07], [Muk07], [Sza08a], [Sza08b], [Sza10a], [Sza10b], [Sza11], [Sza12].
Наиболее же перспективным, по нашему мнению, является применение обобщенных КлА в алгоритмах блочного шифрования в качестве SPK-узла.
При построении блочных шифров обычно применяются композиции преобразований, осуществляющих рассеивание и перемешивание преобразуемой информации, что достигается с помощью использования так называемых P-блоков (P-box) и S-блоков (S-box). При этом смешение с ключевой информацией, как правило, осуществляется или с помощью побитового сложения информационного блока с цикловым ключом, который вырабатывается из секретного ключа с помощью специального алгоритма, называемого алгоритмом выработки ключа, или (как, например, в алгоритме ГОСТ 28147-89) их сложения по модулю 2n. Узел, осуществляющий смешение информационного блока с ключевой информацией, в дальнейшем будем называть K-блоком.
В поисках наиболее продуктивной реализации основных преобразований, задействованных в работе блочного шифра, была предложена концепция SPK-узла, т.е. узла, который осуществляет некоторые нелинейные преобразования над входным информационным блоком и цикловым ключом, реализуя тем самым рассеивание и перемешивание, одновременно с этим осуществляя смешение информационного блока с ключевым материалом.
К одной из первых (во всяком случае, из опубликованных в открытой литературе) попыток создания такого узла можно отнести конструкцию Лая (Lai X.) и Месси (Massey J.), которая была применена в алгоритме блочного шифрования IDEA [Lai91]. Авторами IDEA был предложен MA-узел (Multiplication-Addition), осуществляющий рассеивание, перемешивание и смешение с ключевым материалом входного информационного вектора. В алгоритме IDEA этот узел использовался в качестве цикловой функции шифрования.
MA-узел изображен на рис. 1. Здесь Хk - k-я часть входного информационного вектора, Yk-k-я часть выходного информационного вектора, Km - m-я часть циклового ключа, -операция сложения по модулю 216, - операция умножения по модулю 216+1. При этом конструкция данного алгоритма шифрования предполагает обратимость всех используемых операций (очевидно, это обстоятельство в основном касается операции умножения по модулю 216+1). Хотя для указанных параметров обратимость операции умножения выполняется, ясно, что данный узел не годится для произвольного набора параметров, поскольку далеко не всегда число вида 2k+1 является простым (простота модуля является необходимым и достаточным условием обратимости модульного умножения).
Будем называть узлы данного типа SPK-узлами, так как они выполняют ту же функцию, что и композиции классических S-блоков и P-блоков с операцией сложения с цикловым ключом, которую мы договорились называть K-блоком.
Особо отметим, что в случае блочных шифров, имеющих структуру схемы Фейстеля, не требуется обратимость преобразований, входящих в состав шифрующей функции ƒ (см. рис. 2, где li, ri – части информационного блока, ki – цикловой ключ, ƒ – шифрующая функция).
Отличным кандидатом на применение в качестве SPK-узла являются обобщенные клеточные автоматы. SPK-узел – предложенный автором потенциально перспективный узел для включения в номенклатуру элементов, которые могут использоваться для построения алгоритмов блочного шифрования. Данный подход был впервые использован в [Бал12] и развит в [Клю12а].
Пусть имеется однородный обобщенный клеточный автомат CA, задаваемый регулярным ориентированным графом G = (V, E), где V = {v1, v2,..., vN} – множество вершин, E – множество дуг, причем все вершины имеют полустепень захода, равную δ. Пусть при этом диаметр графа равен d (далее будем называть δ степенью захода обобщенного КлА, а d – диаметром обобщенного КлА). Тогда SPK-узлом на базе обобщенного КлА будем называть обобщенный клеточный автомат CA, начальное заполнение ячеек которого представляет собой бит информационного вектора X и k-бит ключевой информации K, N = n+k, осуществляющий преобразование X x K –> Y. В рамках проведенных исследований размер выходного вектора Y выбирался равным размеру входного информационного вектора (рис. 3).
Таким образом, результатом преобразования SPK-узла на базе обобщенного клеточного автомата будет результат эволюции этого автомата, в процессе которой будет осуществлено и смешение с ключевым материалом, и перемешивание и рассеивание входной информации. При этом для обеспечения хорошего рассеивания и перемешивания минимальное число тактов работы автомата должно быть не меньше, чем d – диаметр графа, задающего этот автомат.
Число переменных, от которых должна существенно зависеть локальная функция связи, должно быть равным δ – степени захода обобщенного КлА. Преимуществом данного SPK-узла является то, что на каждом такте работы обобщенного КлА значение каждой вершины зависит от значения других вершин на предыдущем такте. Следовательно, вычисление ее нового состояния никак не связано с вычислением состояния других вершин. Последнее означает, что новое состояние каждой вершины можно вычислять параллельно с вычислением состояний остальных вершин. Это дает существенное преимущество в применении данных узлов в алгоритмах, реализуемых на платформах, где имеется возможность распараллеливать вычисления.
Для построения надежного алгоритма блочного шифрования на базе клеточных автоматов необходимо правильно выбрать сам клеточный автомат. Обобщенный КлА полностью задается следующими параметрами, которые требуется выбрать разработчику:
Рассмотрим каждый параметр отдельно.
Выбор структуры графа имеет значение для криптостойкости алгоритма. В работе [Клю12в] автором предлагается набор требований, предъявляемых к неориентированному графу, используемому для задания структуры обобщенного клеточного автомата:
В исследованиях, проведенных А.А. Бардышевым, А.А. Бородиным, Н.Ю. Грозмани, использовались ориентированные графы, которые удовлетворяли условиям, описанным выше. Кроме того, в связи с ориентированностью используемых графов появились как уточняющие, так и дополнительные условия:
Одним из важных направлений исследования является анализ зависимости (или отсутствия таковой) сложности реализации клеточного автомата от размера графа, определяющего этот автомат, структуры этого графа и от значения полустепени захода/исхода.
Не менее важным является правильный выбор локальной функции связи обобщенного клеточного автомата. Булева функцияƒi, ассоциированная с каждой из вершин графа автомата, должна удовлетворять условиям, усложняющим криптоанализ алгоритма.
В результате исследований [Сух11], [Клю12в] был предложен ряд условий:
Одной из исследовательских задач является изучение зависимости сложности реализации от выбора локальной функции связи.
Для оценки эффективности реализации разработанных на базе SPK-узла симметрических блочных алгоритмов BCAF и BCNS Н.Ю. Грозмани было осуществлено сравнение этих алгоритмов с классическими блочными алгоритмами шифрования – алгоритмом ГОСТ 28147–89 в режиме простой замены и алгоритмом PRESENT. Алгоритм ГОСТ выбран как российский стандарт симметричного шифрования, допускающий низкоресурсную реализацию [Pos10], [Dmu14], а PRESENT – как принятый международный стандарт для низкоресурсной криптографии [ISO-2]. Параметры алгоритмов BCAF и BCNS были выбраны такими же, как и у алгоритма PRESENT: информационный блок – 64 бита, длина ключа – 80 бит.
Для аппаратной реализации указанных алгоритмов была выбрана микросхема ПЛИС Cyclone II EP2C50F484C6, обладающая всеми необходимыми параметрами и обеспечивающая высокое быстродействие по приемлемой цене. Языком программирования аппаратуры был выбран VHDL. По результатам реализации были получены данные о требуемом числе логических элементов и о быстродействии алгоритмов. Данные проведенных экспериментов приведены на рис. 4, 5.
В результате этого и на основании еще целого ряда проведенных исследований можно утверждать, что при использовании параллельных вычислительных устройств реализации блочных шифров, использующих SPK-узлы на основе обобщенных КлА, являются более эффективными, чем реализации шифров, использующих классические S-, P-, K-блоки, вне зависимости от архитектуры построения шифра – легковесной или производительной.
В блочных шифрах, имеющих структуру классической схемы Фейстеля, в которых использовался SPK-узел на основе КлА [Клю12а], [Бал12], размерность входных данных SPK-узла (т.е. данных, образующих начальное заполнение КлА) превосходит размерность выхода. Таким образом, можно сказать, что часть вычислений, произведенных клеточным автоматом, не участвует в преобразовании информационного блока и как бы "пропадает даром". Ставя целью наибольшую продуктивность реализации преобразований, участвующих в работе блочного шифра, можно предложить следующую схему.
Пусть размер информационного блока блочного шифра равен (t+1)*m бит. Рассмотрим обобщенный клеточный автомат СА, структура которого задается орграфом G (V, E) с N вершинами, N = t*m. Пусть при этом в графе имеется независимое подмножество вершин4 мощности. Клеточный автомат функционирует в качестве шифрующей функции обобщенной схемы Фейстеля [Scn96], [Жук11]. Происходит это следующим образом:
После чего информационный блок циклически сдвигается на m разрядов (см. рис. 6).
Выбор независимого множества для загрузки битов информационного блока обусловлен исследованиями А.А. Бородина, которые показали, что если в обобщенном КлА, используемом в блочном шифре в качестве SPK-узла, можно выбирать заполнение ячеек, соответствующих смежным вершинам графа, то на шифр можно провести атаку по выбранному открытому тексту (Chosen Plaintext Attack). Подобные меры противодействия можно даже усилить, выбирая для записи битов информационного блока вершины, образующие независимое подмножество 2-го порядка. В этой связи появляется целый ряд задач, связанный с соответствующими свойствами ориентированных графов.
Как уже упоминалось выше, использование КлА в равновесных схемах Фейстеля – не вполне экономично, т.к. часть вычислений, проделанных в КлА, не участвует в преобразовании информационного блока. В этом смысле предлагаемый подход более продуктивен – результат всех вычислений, проделанных в КлА, используется в выработке шифртекста. Проведенные исследования также показывают, что для таких конструкций рассеивание и перемешивание информации происходит существенно быстрее, чем при использовании классических S-, P- и K-блоков. Однако для того чтобы предлагать SPK-узлы как актуальную замену классическим S-, P-, K-блокам, требуется проведение более глубокого криптографического анализа предложенной конструкции, что становится важнейшей задачей ближайшего будущего.
В довершение следует упомянуть, что клеточные автоматы по самой своей природе весьма подходят для использования в конструкциях хэш-функций, кодов обнаружения модификации информации (MDC – Modification Detection Code) и кодов проверки подлинности сообщения (MAC – Message Authentication Code). В этом направлении предложено достаточно много конструкций. Так, в работах [Dae93], [Mih98], [Yoo98], [Клю13] предлагаются различные конструкции хэш-функций, базирующиеся на использовании клеточных автоматов.
Что касается криптосистем с открытым ключом на базе клеточных автоматов, то их известно очень немного. Еще в 1987 г. Гуань (Guan P.) предложил свою криптосистему [Gua87], стойкость которой базируется на трудности решения системы нелинейных уравнений, что является NP-полной задачей. Задача обратимости многомерных клеточных автоматов лежит в основе стойкости другой криптосистемы с открытым ключом, предложенной Кари (Kari J.) [Kar92] и получившей дальнейшее развитие в [Cla09]. Еще одна криптосистема с открытым ключом на базе клеточных автоматов была предложена в работе [Zhu07], однако она оказалась нестойкой по отношению к атакам по выбранному открытому тексту [Zha14]. Этих недостатков лишена схема, предложенная в [Zha14].
Подводя итоги, отметим, что клеточные автоматы привлекают все большее внимание криптографического сообщества в связи с тем, что распараллеленность их структуры позволяет увеличивать скорость работы и пропускную способность аппаратных реализаций криптоалгоритмов [Mih98], [Fra04], [Сух11]. Интересные перспективы появляются также при использовании КлА для построения криптографических алгоритмов, не требовательных к вычислительным ресурсам [Жук15].
Особо следует сказать о перспективах использования клеточных автоматов в асимметричной криптографии. На сегодняшний день известно сравнительно небольшое число криптосистем с открытым ключом, причем к ним зачастую предъявляются претензии как ввиду их малой скорости работы, так и по поводу недостаточного обоснования их стойкости. Вплоть до самого последнего времени "технологическая база" криптографии с открытым ключом продолжала оставаться чрезвычайно бедной. В основании стойкости таких систем обычно лежит вычислительная трудность решения некоторой задачи для какой-то алгебраической системы, чаще всего – алгебраической системы с элементами числовой природы. В подавляющем большинстве случаев это или задача факторизации больших чисел, или задача дискретного логарифмирования в циклической группе, чаще всего – мультипликативной группе конечного поля. Учитывая тот факт, что числа, как наиболее древние математические объекты, давно изучаются, неудивительны большие достижения в разработке алгоритмов для решения этих задач. В случае очередного успеха в этой области системы, стойкость которых основана на задачах факторизации и вычисления дискретных логарифмов, могут стать значительно более уязвимыми или даже совершенно нестойкими. Еще более печальны перспективы указанных криптосистем в случае появления квантового компьютера, работающего с тысячами кубит (модели квантовых компьютеров, имеющиеся в настоящее время, работают с единицами кубит). Поиск же других алгебраических систем, применимых в криптографии с открытым ключом в постквантовом мире, является трудной задачей и требует вовлечения в криптографический обиход новых математических объектов [Жук03]. В этой связи стоит обратить особое внимание на клеточные автоматы, которые представляют собой некоммутативные алгебраические структуры [Ped92], [Cec10], [Moo95], и более тщательно изучить вопросы их возможного использования в асимметричной криптографии.
Литература
Опубликовано: Журнал "Information Security/ Информационная безопасность" #4, 2017