Реализация и анализ маскированных алгоритмов блочного шифрования "Магма" и "Кузнечик"
Знакомство с особенностями разработки и реализации маскированных алгоритмов российских стандартов блочного шифрования. Рассмотрение примеров атак по побочным каналам. Общая характеристика маскированных алгоритмов блочного шифрования "Магма" и "Кузнечик".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 18.07.2020 |
Размер файла | 4,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реализация и анализ маскированных алгоритмов блочного шифрования "Магма" и "Кузнечик"
Введение
атака шифрование блочный
В рамках данной дипломной работы решается задача разработки и реализации маскированных алгоритмов российских стандартов блочного шифрования. Целями данной работы являются реализация маскированных алгоритмов блочного шифрования «Магма» и «Кузнечик», а также анализ свойств полученных реализаций. Кроме этого, целью является описание и изучение атак по побочным каналам на блочные алгоритмы шифрования и исследование возможности и эффективности применения данных атак к маскированным алгоритмам блочного шифрования.
В результате выполнения данной работы были описаны теоретические основы построения маскированных алгоритмов блочного шифрования, приведено теоретическое описание модели наблюдений при утечках по побочным каналам, в рамках приведённой модели описаны атаки по побочным каналам при наблюдении за ключевой информацией и при наблюдении за выходами тактовых преобразований блочного шифра, также в рамках модели был проведён сравнение применимости и эффективности данных атак для не маскированных и маскированных алгоритмов блочного шифрования. Помимо прочего, были описаны и разработаны маскированные версии алгоритмов блочного шифрования «Магма» и «Кузнечик» и проведён сравнительный анализ производительности реализации не маскированных алгоритмов с соответствующими реализациями маскированных алгоритмов.
Задачей данной выпускной квалификационной работы является реализация маскированных алгоритмов блочного шифрования «Магма» и «Кузнечик», и чыанализ полученных реализаций.
В работе были поставлены следующие цели для изучения и решения:
· Разработать и реализовать маскированные версии алгоритмов российских стандартов блочного шифрования
· Описать модель и примеры атак по побочным каналам
· Проанализировать свойства полученных алгоритмов, в том числе возможность из применения в качестве противодействия атакам по побочным каналам
· Сравнить производительность полученных реализаций с реализациями не маскированных алгоритмов.
В данной дипломной работе содержаться следующие разделы:
· Введение, в котором описаны основные цели и задачи данной работы
· Описание и объяснение актуальности и новизны работы
· Теоретические основы построения маскированных алгоритмов
· Теоретическую модель наблюдений и атак по побочным каналам
· Формальное описание маскированных алгоритмов «Магма» и «Кузнечик»
· Спецификацию реализации данных алгоритмов
· Сравнительный анализ полученных реализаций
1.Актуальность и новизна
атака шифрование блочный
Атаки по побочным каналам являются одним из способов анализа алгоритмов шифрования, позволяющих получать секретную информацию при зашифровании или расшифровании несмотря на то, что криптографически алгоритм шифрования является стойким, путём многократного наблюдения некоторой «утечки» информации, для конкретной физической реализации алгоритма, будь то информация о времени исполнения, электромагнитное излучение, потребляемая электроэнергия или что-либо другое. Маскированные алгоритмы блочного шифрования позволяют вносить в работу конкретной реализации случайные искажения наблюдаемой информации, без потери корректности итогового алгоритма в целом. Данная работа является, в том числе, исследованием, направленным на описание принципов построения маскированных алгоритмов, для дальнейшего их применения в качестве средства противодействия подобным атакам.
Новизна данный работы заключается в том, что:
· На момент написания работы в открытых источниках отсутствуют готовые маскированные реализации российских стандартов блочного шифрования
· На момент написания работы в открытых источниках отсутствуют исследования свойств таких реализаций, в том числе их потенциальной возможности противодействия атакам по побочным каналам.
2.Теоретическое введение и описание проблематики
В ходе работы любого блочного шифра один и тот же ключ используется многократно. При программной реализации таких шифров ключ храниться в оперативной памяти компьютера и постоянно оттуда считывается. Из-за постоянного чтения одной и той же информации из памяти компьютера она может быть перехвачена по побочному каналу.
Побочными каналами принято называть любую информацию о работе реализации алгоритма не являющуюся её непосредственным входом или выходом. Примерами такой информации может являться ПЭМИН (побочные электромагнитные излучения и наводки), время работы, потребляемая электроэнергия и так далее. Так при атака по побочным каналам производится наблюдение за некоторыми деталями реализации того или иного алгоритма, то имеется возможность в общем случае накапливать информацию не о всей совокупности проводимых операций, а например о какой-то их части, что может в свою очередь позволить уменьшить мощность ключевого множества для перебора и объединять отдельно подобранные части ключевой информации вместе. Это является принципиальным отличием данного подхода от классического крипто анализа и поэтому, для защиты от подобных атак, требуется разработка специальных подходов.
Большинство атак по побочным каналам предполагают многократное наблюдение некоторой информации о работе алгоритма, после чего в условиях заранее определённой вероятностной модели наблюдений выдвигаются и проверяются статистические гипотезы о фактических значения ключевой информации.
В случае с блочными шифрами чаще всего наблюдение производится за одним из двух типов информации:
· Ключевая информация - содержит в себе значение секретного ключа шифрования. Данная информация многократно читается из памяти и может многократно наблюдаться
· Выход определённого такта работы блочного шифра. Из такой информации, при известных открытых текстах, можно вычислить значения секретного ключа.
Одним из способов защиты от атак по побочным каналам, являются маскированные реализации блочных шифров. Маскирование позволяет вносить в наблюдаемые по побочным каналам величины элемент случайности, с учётом которого восстановление нужной информации становится более трудоёмким, чем в исходном алгоритме.
2.1 Формальное определение маскированного алгоритма блочного шифрования
Пусть дан алгоритм блочного шифрования
где - множество блоков, - множество ключей, - функция шифрования, - функция одного такта шифрования, - функция расшифрования, - функция одного такта расшифрования, - количество тактов.
Замечание 3.1.1: Строго говоря, в общем случае, функции шифрования и расшифрования могут являться не просто -ой степенью некоторого более простого «такового» преобразования, но еще и иметь в начал и/или в конце своей работы этап подготовки или завершения обработки данных, но для данного рассмотрения это абсолютно не принципиально, так что эта деталь умышлена опущена.
Назовём маскированным ключом последовательность такую что:
где - размер последовательности, - некоторая константа, а сложение понимается в смысле сложения в линейном пространстве векторов , с которым на практике отождествляется множество ключей (чаще всего имеется ввиду двоичное представление ключа и побитовое сложение).
Такая последовательность вычисляется с помощью заранее заданной функции:
Пусть имеется некоторая последовательность случайных величин - дискретная равномерная случайная величина, равновероятно принимающая значения на множестве .
Пусть также заданы две функций:
Тогда маскированным алгоритмом шифрования будем называть
если для любых значений :
Замечание 3.1.2: Такое определение, не смотря на свою громоздкость, отображает суть происходящего: на каждом такте случайно выбирается ключ, после этого производится преобразование над данными с учётом выбранного ключа. Результаты таких преобразований в итоге дают результат равный результату шифрования обычным (не маскированным) алгоритмом.
2.2 Частный случай маскирования
Несмотря на то, что приведённое выше определение не накладывает никаких ограничений на размер последовательности, определяющий маскированный ключ, на практике имеет смысл в первую очередь рассматривать более частный случай .
В таком случае маскированный ключ :
При этом при дальнейшем рассмотрении будем считать, что преобразование задано следующим образом:
Что означает что .
Также стоит отметить, что при введении таких ограничений случайные величины могут рассматриваться как - биномиальное распределение.
Еще важно сказать, что в действительности для шифрования используется не фиксированный ключ , а некоторая его развёртка , при этом совпадают с размером блока, то есть фактически . В таком случае для маскированной реализации имеют место две последовательности и и именно для них выполняется некоторое условие:
И опять же .
Такой случай строго говоря является частным случаем более общего ограничения , и может показаться избыточным, но на практике встречается зачастую именно он.
2.3 Связь маскированных и не маскированных «тактовых» преобразований
Другим важным ограничение для практического рассмотрение является ограничение на функции и . Несмотря на то, что общее определение маскированного алгоритма предполагает лишь равенство конечного результата после всех «тактовых» преобразований, практические реализации таких алгоритмов зачастую имеют определённую связь между «тактовыми» преобразованиями, а точнее связь между результатами выхода -ого такта маскированного алгоритма и не маскированного.
Обозначим через последовательность выходы соответствующих тактов не маскированного алгоритма и - результаты соответствующих тактов маскированного алгоритма. На практике и в данной работе будет предполагаться связь следующего вида:
где функция принимает значения в , а сложение и умножение понимается в терминах операций в линейном пространстве , с которым на практике отождествляется множество значений блоков шифра.
Таким образом можно сказать, что:
По факту, - некоторая случайная величина, зависящая от префикса последовательности . Более конкретно, в данной работе будут рассмотрены три различных случая:
1. - выходы каждого такта маскированного алгоритма, совпадают с выходами не маскированного
2. - выходы -ых тактов совпадают, если
3. - выходы -ых тактов совпадают, если сумма равно
Аналогичные рассуждения верны и для процесса расшифрования и выходов тактов при расшифровании.
3.Модели наблюдений и атак
Как уже было описано выше именно модель наблюдений даёт строить статистические гипотезы о значении ключевой информации. Детальное описание таких моделей может включать в себя множество факторов, связанных с деталями работы конкретной реализации на конкретной программно-аппаратной платформе. Несмотря на это, для изучение общих характеристик тех или иных алгоритмов имеет смысл абстрагироваться от подобных деталей и выбрать общую базовую модель наблюдений и отталкивать от неё.
В этом пункте и во всех подпунктах далее описание моделей наблюдения частично базируется на результатах работы [8], в которой рассмотрена общая модель с некоторой произвольной функцией от наблюдаемого вектора с информацией. В данной работе для простоты рассмотрения и построения конкретных атак ограничим рассмотрение одной функцией - вес Хемминга.
3.1 Модель наблюдений ключевой информации
Перед началом описания важно отметить, что тут под ключевой информацией понимается некоторая часть от секретного ключа (возможно и весь ключ сразу). Как уже было сказано выше атаки по побочным каналам позволяют независимо наблюдать отдельные части ключевой информации.
Пусть есть часть ключа , с помощью которого реализуется некоторая часть шифрования или расшифрования. Для вешнего наблюдателя - неизвестная случайная величина, равномерно распределённая на множестве . Опять же в общем случае , так как может рассматриваться только некоторая часть ключа. Как уже было сказано выше такое множество можно отождествить с .
В данной модели предположим, что наблюдателю не доступно напрямую отдельно наблюдать каждой значение «бита» части ключа, а он может наблюдать только некоторую интегральную характеристику ключа. В качестве такой интегральной характеристики, как уже было сказано выше, возьмём вес Хемминга . Так же при наблюдении накладывается некоторый шум и наблюдения производятся многократно, так что итоговая наблюдаемая последовательность величин:
где - нормальное стандартное распределение, - коэффициент шума.
Если наблюдения проводятся за не маскированной реализацией алгоритма, то - константа и
Если наблюдения проводятся за маскированной реализацией алгоритма, то и
Детальное изучение данных последовательностей случайных величин не входит в рамки рассмотрения для данной работы, в прочем стоит отметить очевидный факт «более случайного» поведения последовательности при наблюдении за маскированной реализацией алгоритма.
3.2 Атака при наблюдении ключа
При прямом наблюдении ключа стоит задача по серии наблюдений статистически вычислить значение исходного ключа шифрования. Далее рассмотрим такие атаки могут быть реализованы в случае не маскированной и маскированной реализаций блочного шифрования.
3.2.1 Атака на не маскированную реализацию
В случае наблюдения ключа в не маскированном алгоритме последовательность наблюдаемых величин будет описываться следующим образом:
где - нормальное стандартное распределение, - коэффициент шума.
В таком случае воспользовавшись методом моментов можно утверждать, что:
где - выборочное среднее, - размер выборки.
Такой метод достаточно тривиален и вычислительно крайне эффективен, но даёт никаких качественных оценок вероятности получение верного или не верного значения в зависимости от или . Тем ни менее можно получить эти данные экспериментально.
Для этого для разных значений параметров и сгенерируем псевдослучайные последовательности с соответствующим распределение. Вычисляя выборочное среднее и сравнивая его с изначальным значением экспериментально вычислим процент успешных экспериментов. Так как случайно равновероятный, то распределён как , где - длина ключа. В приведённых ниже экспериментах .
Таблица 1
Сводная таблица процентов успешного нахождения в случае не маскированного алгоритма. По горизонтали - , по вертикали -
Рис.1
График процентов успешного нахождения в зависимости от и в случае не маскированного алгоритма
Легко заметить, что даже при малых и больших доля успешно вычисленных порядка нескольких процентов, что достаточно много.
3.2.2 Атака на маскированную реализацию
В случае наблюдения ключа в не маскированном алгоритме последовательность наблюдаемых величин будет описываться следующим образом:
где , - нормальное стандартное распределение, - коэффициент шума.
Снова воспользуемся методом моментов и получим оценку выборочного среднего:
Очевидно, этого недостаточно, чтобы вычислить и , поэтому кроме выборочного среднего, также получим оценку на выборочную дисперсию.
Вычислим В силу свойств дисперсии и независимости и :
где
Так как,
то
и
Следовательно, можно сказать, что
(не теряя общности будем считать, что )
Основываясь на полученных оценках, можно вычислять значения и ). Отметим так же что в силу случайного равновероятного выбора и рассуждений из предыдущего пункта обе величины распределены как , где - длина ключа. Учитывая это проведём эксперименты и вычислим процент успешных нахождений искомых значений в зависимости от и .
Таблица 2
Сводная таблица процентов успешного нахождения и в случае маскированного алгоритма. По горизонтали - , по вертикали -
График процентов успешного нахождения и в зависимости от и в случае маскированного алгоритма
Легко заметить существенное уменьшение процента успешных вычислений значений и ).
3.2.3 Сравнение маскированного и не маскированного алгоритмов
Построим сводную таблицу и график соотношений между процентами успешных вычислений при маскированном и не маскированном алгоритмах
Таблица 3
Сводная таблица соотношений процентов успешного вычисления.
По горизонтали - , по вертикали -
График соотношений процентов успешного вычисления.
Несмотря на то, что полученных данных и проведённых исследований недостаточно чтобы провести четкую границу, которая бы определяла эффективность или не эффективность использования маскированного алгоритма, по полученным данным абсолютно очевидно, что:
1. При малых значениях и больших значениях маскированных алгоритм на порядки более сложно атаковать описанным способом
2. При больших значениях и малых значениях оба алгоритма одинаково уязвимы.
3.3 Модель наблюдения за выходами таков
Здесь для простоты рассмотрения можно предполагать наиболее вероятный сценарий и строить модель относительно него. Пусть есть известный входной блок , который передаётся для шифрования. Выход первого такта работы блочного шифра обозначим как . Отметим, что , при этом множество отождествляется с , где - размер блока.
Метод анализа по таким наблюдением более сложен, чем прямой анализ ключевой информации. Предполагается что есть некоторая последовательность известных открытых текстов, зашифрованных на фиксированном неизвестном ключе , и последовательность - выходы первых тактов шифрования. Именно эти величины наблюдаются. Также, как и в предыдущем модели наблюдается некоторая интегральная характеристика величины, а точнее вес Хемминга.
Для вычисления ключевой информации делается предположение что - истинный ключ. И проверяется гипотеза с помощью сравнения наблюдаемых данных с последовательностью - выходы первых тактов шифрования блоков на ключе .
Как уже было сказано выше есть 3 встречающихся на практике вида связи выходов «тактовых» преобразований маскированного и не маскированного алгоритма:
1.
2.
3.
Очевидно, что в первом случае маскированный алгоритм не создаёт никаких дополнительных препятствий для анализа, так как вне зависимости от используемых ключей выходы тактовых преобразований совпадают.
Так же заметим, что если случайный величины - распределены равно вероятно на множестве , то закон распределения , где сумма понимается в терминах операций в поле , также будет . То есть с точки зрения внешнего наблюдателя, будет наблюдаться величина:
где - нормальное стандартное распределение, - коэффициент шума, в случае не маскированного алгоритма.
где - нормальное стандартное распределение, - коэффициент шума, в случае маскированного алгоритма. Опять же не вдаваясь в рассмотрение вероятностных характеристик таких последовательностей, отметим заметно более сложную структуры последовательности в случае маскированной реализации.
3.4 Атака при наблюдении выходов тактов
Как уже было сказано в предыдущем пункте модель наблюдения за выходами таков работы блочного шифра существенно сложнее и атаки при такой модели наблюдений заметно более сложные, чем при наблюдении за ключевой информацией.
3.4.1 Атака на не маскированную реализацию
Путь известен набор входных текстов , и производится наблюдение за выходами некоторого такта работы шифра . Как уже было описано в предыдущем пункте, наблюдаемая величина будет иметь вид:
где - нормальное стандартное распределение, - коэффициент шума.
После этого перебираются всё множество значений части ключа использованного для шифрования в плоть до наблюдаемого такта, таким образом перебирается не всё ключевое множество, а лишь его часть. Для каждого ключа последовательность шифруется до того же такта, до которого производилось наблюдение и получается последовательность .
Рассмотрим последовательность случайных величин:
Рассмотрим гипотезу и гипотезу . Так как
То:
Прямое различение двух этих гипотез по последовательности достаточно трудоёмкая задача, так как , так что для различения этих гипотез рассмотрим следующую последовательность случайных величин.
Заметим, что:
Таким образом, если рассмотреть последовательность случайных величин , с учётом того, что они независимые и одинаково распределённые, то можно утверждать, что в соответствии с центральной предельной теоремой
Далее в зависимости от требований определяются границы и в зависимости от полученного значения статистики , принимается либо гипотеза или гипотеза .
3.4.2 Атака на маскированную реализацию
В случае с маскированной реализацией алгоритма, как уже было описано выше, наблюдаемая величина имеет вид:
где - нормальное стандартное распределение, - коэффициент шума, в случае маскированного алгоритма.
По аналогии с предыдущим пунктом введём новую последовательность случайных величин:
В силу случайного выбора и , при условии любой гипотезы :
А это в свою очередь означает невозможность различения этих двух гипотез, основываясь на значения последовательности .
4.Описание алгоритмов блочного шифрования «Магма» и «Кузнечик» и их маскированных реализаций
Реализация маскированных алгоритмов блочного шифрования является сложной задачей так как необходимо чтобы алгоритм корректно работал с несколькими ключами одновременно в условия случайного выбора между ними. В общем случае, для произвольного блочного шифра, не существует описания того, как нужно преобразовать стандартный алгоритм, чтобы он стал маскированным. В данной работе мы будем рассматривать два конкретных алгоритм блочного шифрования ГОСТ 34.12-2015 «Магма» и ГОСТ 34.12-2015 «Кузнечик» и их маскированные реализации.
4.1ГОСТ 34.12-2015 «Магма»
Данный алгоритм [5] в первые был прият как стандарт в 1989 году [7]. Он является достаточно старым и хорошо изученным, но до сих пор является частью действующего стандарта, поэтому обязателен к рассмотрению
4.1.1 Алгоритм ГОСТ 34.12-2015 «Магма»
Данный алгоритм построен с помощью сети Фейстеля со следующими параметрами:
· Размер блока - 64 бита
· Размер ключа - 256 бит
· Количество раундов - 32
· Раундовое преобразование можно задать как , где
o - операция сложения в кольце
o - нелинейное биективное отображение (подстановка)
o - циклический битовый сдвиг вправо на 11
o - входной блок раунда
o - раундовый ключ
o - побитовое сложение, сложение в поле
Тогда, если и - 2 начальных блока открытого текста
()
и
,
то будет результирующим шифротекстом.
Такое рекурсивное представление шифрования с помощью сети Фейстеля, не является необходимым для данного рассмотрения, но служит хорошим способом выражения сути алгоритма и поможет нам при дальнейшем анализе свойств алгоритма и сравнения его с маскированным.
4.1.2 Маскированный алгоритм ГОСТ Р 34.12-2015 «Магма»
Пусть
· - последовательность бит, где , а - случайные биты
· , а - инвертированный раундовый ключ, где =
· , где
Тогда можно построить рекуррентную последовательность , где
Можно показать, что .
Более того в общем случае верна формула
Таким образом для каждого такта работы блочного шифра случайно выбирается один из двух ключей или .
Данное описание алгоритма и результатов его работы было частично взято из [1].
4.1.3 Сравнение маскированной и не маскированной реализаций
Выделим две ключевые связи между маскированной и немаскированной реализациями. Как уже было описано выше:
Отметим, что это означает, что и при наблюдении за ключевой информацией и при наблюдении за выходом некоторого «такта» работы алгоритма внешний наблюдатель будет наблюдать случайное значение, зависящее от , что заметно усложняет криптоанализ. При это также важно заметить тот факт, что константа , то есть это не является параметрам данной реализации и фиксирована заранее. Это в некотором смысле может снижать свойства стойкости данного алгоритма к атакам по побочным каналам.
4.4 ГОСТ 34.12-2015 «Кузнечик»
Данный алгоритм [5] принят недавно как стандарт недавно и заметно превосходит по многим параметрам своего предшественника. Изучение свойств данного алгоритма и увеличение его способностей к противостоянию различным атакам, в том числе и по побочным каналам является очень важной и актуальной задачей.
4.4.1 Алгоритм ГОСТ 34.12-2015 «Кузнечик»
Блочный шифр кузнечик является XSL шифром:
· Размер блока - 128 бита
· Размер ключа - 1280 бит (развёртка)
· Количество раундов - 9 (+ последнее наложение ключа)
· Раундовое преобразование можно задать как , где
o - побитовое сложение, сложение в поле
o - нелинейное биективное отображение (подстановка)
o - линейное преобразование в
o - раундовый ключ
Тогда алгоритм шифрования можно представить как:
Заметим, что стандарт также описывает алгоритм развёртки ключа в последовательность , но для данного рассмотрения эта деталь нам не важна. Развёртка ключа после генерации используется для шифрования большого количества блоков, так что в первом приближении можно считать её фиксированной.
4.4.2 Оптимизации при реализации алгоритма «Кузнечик»
Хорошо известным подходом к оптимизации является объединение двух операций в одну и предварительное вычисление так называемой LUT таблицы (Lookup Table).
По стандарту линейное преобразование является умножением на некоторую матрицу
а нелинейное преобразование является производной от более простой подстановки
а символом - обозначается операция конкатенации.
Заметим, что, если обозначить:
Тогда верно следующие:
В таком случае для быстрого вычисления функции достаточно заранее посчитать все возможные значения шестнадцати функций и сохранить их в памяти. Это займёт и позволит свести сложное преобразование к 16-ти чтением из памяти и последующему сложению.
Также для расшифровывающего преобразование верно:
И по аналогии с описанными выше размышления для процесса расшифрования можно объединить преобразования .
Эти оптимизации используются в практической реализации, которая будет рассмотрена позже и существенно влияют на производительность.
4.4.3 Маскированный алгоритм ГОСТ 34.12-2015 «Кузнечик» без искажения выходов «тактовых» преобразований
Пусть даны маскированные раундовые ключи:
Определим два нелинейных преобразования следующим образом:
Замети что при этом:
Назовём такие преобразования - компенсирующими , так как при «наложении» на ключ соответствующие преобразование компенсирует эту .
Тогда маскированным алгоритмом шифрования является:
Можно показать, что:
Более того, для такой реализации маскирования выполняется более сильное свойство:
Основной идеей при такой реализации маскирования является то, что если выбирается ключ с наложенной на него , то в пару к нему выбирается такое преобразование, которое бы эту наложенную скомпенсировало и на выходе получилось бы значение такое же, как и при не маскированном алгоритме.
Что, строго говоря, скорее негативно влияет на свойства алгоритма, так как из-за этого выходы раундовых преобразований для маскированного и для не маскированного алгоритма совпадают, что в свою очередь означает что такой алгоритм не защищён от анализа выходов раундовых преобразований. Назовём такой алгоритм маскированным алгоритмом без искажения выходов «тактовых» (раундовых) преобразований.
4.4.4 Маскированный алгоритм ГОСТ 34.12-2015 «Кузнечик» с искажением выходов «тактовых» преобразований
Пусть, как и в предыдущем пункте, даны маскированные раундовые ключи:
Определим два нелинейных преобразования следующим образом:
Также определим преобразования:
Заметим важный факт: здесь лишь обозначение и в общем случае не является обратным преобразованием к .
Назовём такие преобразования - прозрачными для , так как эти преобразования при, в некотором смысле, искажённом входе как бы прозрачно проносят через себя это искажение, даже не смотря что в общем случае являются нелинейными.
Также введём последовательность :
Можно показать, что:
Более того, для такой реализации справедливо более сильное свойство. Пусть заданы: выходные блоки после очередного раунда не маскированного алгоритма, выходные блоки после очередного раунда маскированного алгоритма, тогда верно следующее:
и аналогичное равенство справедливо и при расшифровании.
Основной идеей при таком подходе к реализации маскированного алгоритма является то, что при выборе ключа с наложенной выбирается такое преобразование, которое прозрачно пронесёт через себя такое наложение. Количество таких наложение учитывается с помощью последовательности .
Такое свойство положительно сказывается на свойствах стойкости к атакам по побочным каналом данной реализации маскированного алгоритма, так как ни ключ, ни выходные блоки не являются постоянными и постоянно случайно меняют свои значения
4.4.5 Сравнение маскированных и не маскированной реализаций
Выделим две ключевые связи между маскированной реализацией без искажения выходов «тактовых» преобразований и немаскированной реализацией. Как уже было описано выше:
Такая реализация подходит только если стоит задача защититься только от прямого наблюдения за ключём, так как позволяет наложить на ключ произвольную , в отличии от реализации для алгоритма «Магма». В реальности она интересна только с академической точки зрения и на практике не должна применятся, так как не имеет существенных преимуществ перед реализацией с искажением выходов «тактовых» преобразований.
Теперь выделим две ключевые связи между маскированной реализацией с искажением выходов «тактовых» преобразований и немаскированной реализацией. Как уже было описано выше:
Данная реализация предоставляет максимальный уровень «случайности» в предполагаемых для наблюдения данных из все приведённых в данной работе алгоритмов, так как случайным образом искажает и ключ, и выходы «тактовых» преобразований, при этом может быть использована произвольная .
5.Реализация
Данные алгоритмы были разработаны как часть библиотеки с открытым исходным кодом libakrypt-0.x [2]. Далее будет описаны только ключевые части реализации данных алгоритмов, со всеми детали из реализаций можно ознакомится по ссылкам [3], [4].
5.1 Реализация маскированного алгоритма «Магма»
static int ak_magma_create_masked_data (ak_skey magma_skey)
Функция развёртывания ключа для маскированного алгоритма «Магма».
В данной функции генерируются дополнительные нелинейные подстановки и создаётся инвертированный ключ
Аргументы
· magma_skey Указатель на контекст секретного ключа
Возвращает:
В случае успеха функция возвращает ak_error_ok. В противном случае, возвращается код ошибки.
static void ak_masked_magma_encrypt_with_mask (ak_skey skey,
ak_pointer in,
ak_pointer out)Функция зашифрования одного блока информации маскированным алгоритмом ГОСТ 34.12-2015 «Магма».
Аргументы
· skey Контекст секретного ключа.
· in Блок входной информации (открытый текст).
· out Блок выходной информации (шифртекст).
static void ak_masked_magma_decrypt_with_mask (ak_skey skey,
ak_pointer in,
ak_pointer out)
Функция расшифрования одного блока информации маскированного алгоритмом ГОСТ 34.12-2015 «Магма».
Аргументы
· skey Контекст секретного ключа.
· in Блок входной информации (шифртекст).
· out Блок выходной информации (открытый текст).
5.2 Реализация маскированного алгоритма «Кузнечик»
Имена, параметры и смыслы функций совпадают для обеих реализаций маскированного алгоритма «Кузнечик» так что здесь проводить разделение между ними не будем.
static int ak_kuznechik_init_masked_key (ak_skey skey)
Функция развёртывания ключа для маскированного алгоритма «Кузнечик».
В данной функции генерируются случайная , дополнительные нелинейные подстановки и создаётся ключ с наложенной на него .
Аргументы
· skey - указатель на контекст секретного ключа
Возвращает:
В случае успеха функция возвращает ak_error_ok. В противном случае, возвращается код ошибки.
static void ak_kuznechik_encrypt_with_mask (ak_skey skey,
ak_pointer in,
ak_pointer out)
Функция зашифрования одного блока информации маскированным алгоритмом ГОСТ 34.12-2015 «Кузнечик».
Аргументы
· skey Контекст секретного ключа.
· in Блок входной информации (открытый текст).
· out Блок выходной информации (шифртекст).
static void ak_kuznechik_decrypt_with_mask (ak_skey skey,
ak_pointer in,
ak_pointer out)
Функция расшифрования одного блока информации маскированного алгоритмом ГОСТ 34.12-2015 «Кузнечик».
Аргументы
· skey Контекст секретного ключа.
· in Блок входной информации (шифртекст).
· out Блок выходной информации (открытый текст).
6.Результаты и сравнение реализаций
В результате проделанных исследований были получены три реализации маскированных алгоритмов шифрования: одна для алгоритма «Магма» и две для алгоритма «Кузнечик».
6.1 Корректность реализаций
Библиотека libakrypt-0.x [2] имеет встроенные механизмы проверки корректности работы блочных шифров. Тестирование производится в соответствии с примерами из ГОСТ Р 34.12-2015 [5] и ГОСТ Р 34.13-2015 [6] для всех трёх реализаций маскированных алгоритмов блочного шифрования. Реализации, описанные в данной работе, прошли все проверки.
6.2 Производительность
Очевидно, что маскированные алгоритмы блочного шифрования имеют более сложную структуру и требуют дополнительных вычислений во время шифрования и расшифрования. Ключевой параметр, который необходимо учесть при реализации и максимальной уменьшение в снижении производительности, по сравнению с не маскированного реализацией алгоритма.
Для данных целей в библиотеке libakrypt-0.x есть встроенный тест, позволяющий измерить производительность реализации шифра на задаче шифрования случайно сгенерированного файла размером 128 МБ
Таблица 4
Алгоритм |
Время шифрования файла, с |
Время шифров. 1 МБ, мс |
Средняя скорость шифрования, МБ/с |
|
Магма |
2.72 |
21.3 |
46.99 |
|
Маскированная Магма |
3.22 |
25 |
39.70 |
|
Кузнечик |
1.37 |
10.7 |
93.27 |
|
Маскированный Кузнечик без искажения выходов |
1.57 |
12.2 |
81.47 |
|
Маскированный кузнечик с искажением выходов |
1.56 |
12.2 |
81.95 |
Заметим, что во всех трёх случаях потери в производительности составляют примерно 12%-15%. При этом важно отметить, что если (исключительно для тестирования) вместо генерации случайных последовательностей выбрать заранее для них фиксированные значения, то производительность маскированных и не маскированных алгоритмов практически не будет различаться, и потери в производительности будут в пределах погрешности измерений, из чего можно сделать вывод что в данном случае сами реализации маскированных алгоритмов блочного шифрования оптимальны и достаточно производительны.
Вывод
В данной работе была проведена разработка и анализ маскированных алгоритмов блочного шифрования «Магма» и «Кузнечик». По итогам работы были получены следующие результаты:
1. Были изучены и проанализированы угрозы информационной безопасности, возникающие при атаках по побочным каналам на алгоритмы блочного шифрования.
2. Были изучены и описаны теоретические основы подходов к реализации маскированных алгоритмов блочного шифрования.
3. Была описана формальная модель наблюдений при атаках по побочным каналам
4. Были описаны атаки по побочным каналам на маскированные и не маскированные алгоритмы шифрования
5. Было проведено сравнение успешности таких атак в зависимости от применения не маскированных и маскированных алгоритмов
6. Были разработано теоретическое описание маскированных алгоритмов блочного шифрования «Магма» и «Кузнечик»
7. Были реализованы маскированные алгоритмы блочного шифрования «Магма» и «Кузнечик»
8. Был проведён сравнительный анализ производительности маскированных и не маскированных реализаций алгоритмов блочного шифрования «Магма» и «Кузнечик»
Библиографический список
1.S.V. Matveev (2014, September 26). GOST 28147-89 masking against side channel attacks. http://www.mathnet.ru/links/9f449d1334bb483818475eaf994206c3/mvk143.pdf.
2.Crypto Module for OpenSKZI Project https://github.com/axelkenzo/libakrypt-0.x .
3.Реализация маскированного алгоритма блочного шифрования «Магма» https://github.com/axelkenzo/libakrypt-0.x/pull/9
4.Реализации маскированных алгоритмов блочного шифрования «Кузнечик» https://github.com/axelkenzo/libakrypt-0.x/pull/22
5.ГОСТ 34.12-2015 Блочные шифры. https://tc26.ru/standard/gost/GOST_R_3412-2015.pdf
6.ГОСТ 34.13-2015 Режимы работы блочных шифров. https://tc26.ru/standard/gost/GOST_R_3413-2015.pdf
7.ГОСТ 28147-89 Алгоритм криптографического преобразования http://gostexpert.ru/data/files/28147-89/6b481f48474c8bdcbe030a95778c5292.pdf
8.Quantifying the Quality of Side-Channel Acquisitions. Sylvain GUILLEY, Houssem MAGHREBI, Youssef SOUISSI, Laurent SAUVAGE and Jean-Luc DANGER. COSADE 2011 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.457.1732&rep=rep1&type=pdf?
Приложение
атака шифрование блочный
В данном приложении приведён код реализации описанных в данной работе алгоритмов.
Маскированная реализация алгоритма «Магма»
Размещено на Allbest.ru
...Подобные документы
Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.
курсовая работа [314,2 K], добавлен 27.01.2015Сравнение производительности программных реализаций алгоритмов шифрования с оптимизациями под языки С и Java. История разработки, сущность, принципы шифрования и успехи в криптоанализе таких алгоритмов шифрования как AES, RC4, RC5, RC6, Twofish и Mars.
реферат [1,3 M], добавлен 13.11.2009Шифрование с использованием симметричных алгоритмов. Генерация зарытого ключа для асимметричных алгоритмов шифрования. Применение асимметричных алгоритмов шифрования. Управление цифровыми сертификатами и управление списками отзыва сертификатов.
учебное пособие [677,6 K], добавлен 13.10.2015Автоматизация процесса шифрования на базе современных информационных технологий. Криптографические средства защиты. Управление криптографическими ключами. Сравнение симметричных и асимметричных алгоритмов шифрования. Программы шифрования информации.
курсовая работа [795,7 K], добавлен 02.12.2014История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.
курсовая работа [492,6 K], добавлен 18.09.2016Особенности шифрования данных, предназначение шифрования. Понятие криптографии как науки, основные задачи. Анализ метода гаммирования, подстановки и метода перестановки. Симметрические методы шифрования с закрытым ключом: достоинства и недостатки.
курсовая работа [564,3 K], добавлен 09.05.2012Шифрование как метод защиты информации. История развития криптологии. Классификация алгоритмов шифрования, симметричные и асимметричные алгоритмы. Использование инструментов криптографии в Delphi-приложениях. Краткая характеристика среды Delphi 7.
курсовая работа [48,5 K], добавлен 19.12.2009Реализация алгоритма DES и режимов шифрования для любой длины сообщения и любой длины ключа. Шифрование сообщений различной длины и ключа с замериванием времени и скорости шифрования. Реализация алгоритма RSA. Сохранение зашифрованного файла на диск.
курсовая работа [398,4 K], добавлен 26.01.2010История появления симметричных алгоритмов шифрования. Роль симметричного ключа в обеспечении степени секретности сообщения. Диффузия и конфузия как способы преобразования бит данных. Алгоритмы шифрования DES и IDEA, их основные достоинства и недостатки.
лабораторная работа [335,9 K], добавлен 18.03.2013Появление шифров, история эволюции криптографии. Способ приложения знаний особенностей естественного текста для нужд шифрования. Критерии определения естественности. Способ построения алгоритмов симметричного шифрования. Криптосистема с открытым ключом.
реферат [452,2 K], добавлен 31.05.2013Разработка программы кодирования текстового файла при помощи блочного алгоритма шифрования ТЕА типа "Сеть Фейштеля", который основан на битовых операциях с 64-битным блоком и имеет 128-битный ключ шифрования. Результаты кодирования и декодирования.
лабораторная работа [299,9 K], добавлен 18.07.2013Шифрование - широко используемый криптографический метод сохранения конфиденциальности информации. Описание схемы шифрования и расшифрования. Структура алгоритмов на основе сети Фейстеля. Скриншоты работающей программы. Скорость работы алгоритмов.
курсовая работа [545,2 K], добавлен 29.11.2010Исследование элементов эллиптических кривых, необходимых для реализации криптографических протоколов. Изучение алгоритмов арифметики точек эллиптической кривой и способов генерации кривых для криптографических алгоритмов. Описание алгоритмов шифрования.
курсовая работа [371,2 K], добавлен 07.08.2012Описания режимов шифрования с использованием электронной книги кодов, с посимвольной и внутренней обратной связью. Генератор реальных случайных последовательностей. Линейный сдвиговый регистр с обратной связью. Генерация ключей в министерстве обороны США.
реферат [206,1 K], добавлен 18.01.2015Основные составляющие информационной безопасности. История криптографии, правило Керкхоффа. Понятие и виды шифрования. Общая схема симметричных алгоритмов. Схемы использования и преимущества асимметричных алгоритмов, Электронно-цифровая подпись.
презентация [257,8 K], добавлен 30.08.2013Симметричные криптосистемы как способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Разбор и реализация шифрования алгоритма: простая и двойная перестановка, перестановка "магический квадрат".
курсовая работа [3,3 M], добавлен 11.03.2013История алгоритмов симметричного шифрования (шифрования с закрытым ключом). Стандарты на криптографические алгоритмы. Датчики случайных чисел, создание ключей. Сфера интересов криптоанализа. Системы электронной подписи. Обратное преобразование информации.
краткое изложение [26,3 K], добавлен 12.06.2013Изучение классических криптографических алгоритмов моноалфавитной подстановки и перестановки для защиты текстовой информации. Анализ частоты встречаемости символов в тексте для криптоанализа классических шифров. Сущность одноалфавитного метода шифрования.
лабораторная работа [2,8 M], добавлен 25.03.2015Применение алгоритмов шифрования и дешифрования данных в компьютерной технике в системах сокрытия конфиденциальной и коммерческой информации от злонамеренного использования сторонними лицами. Классический пример - симметричные криптографические алгоритмы.
дипломная работа [44,9 K], добавлен 08.07.2009Принцип программной реализации классических криптографических методов. Метод шифрования с использованием таблицы Виженера. Создание текстового редактора "Блокнот", содержащего методы шифрования. Вербальный алгоритм и программа для методов шифрования.
курсовая работа [2,0 M], добавлен 20.01.2010