УДК 004.056.2
ОБ ОБНАРУЖЕНИИ АЛГЕБРАИЧЕСКИХ МАНИПУЛЯЦИЙ С ПОМОЩЬЮ ОПЕРАЦИИ УМНОЖЕНИЯ
М. О. Алексеева,1, ведущий программист
аСанкт-Петербургский государственный университет аэрокосмического приборостроения,
Санкт-Петербург, РФ
Постановка проблемы: известно, что реализации криптографических алгоритмов подвержены атакам по сторонним каналам. Одной из наиболее эффективных является атака по привнесенным помехам с последующим линейным или дифференциальным анализом ошибок. Атака заключается в нестандартном воздействии на криптографическое устройство в целях внесения помех в его работу. Модель такой атаки получила название алгебраической манипуляции. Целью работы являются исследование и развитие одного из методов защиты от рассматриваемой атаки. Результаты: исследуемая контрмера заключается в построении нелинейного помехоустойчивого кода, кодирующей функцией которого выбирается операция умножения в конечном поле. Разработаны и описаны два варианта модификации кодовой конструкции, основанные на расширении случайной величины и на разбиении информационного сообщения. Данные модификации позволяют варьировать такие параметры кода, как скорость и вероятность обнаружения атаки, во многих случаях уменьшая избыточность кода. При этом вторая модификация также позволяет снизить аппаратные затраты на реализацию кодека. Практическая значимость: полученная гибкая и просто реализуемая кодовая конструкция обнаруживает любую ошибку в передаваемой информации с заданной вероятностью даже при условии коррелирован-ности значения ошибки и кодируемых данных.
Ключевые слова — помехоустойчивые коды, нелинейные коды, атаки по сторонним каналам, алгебраические манипуляции, умножение в поле.
Введение
Использование линейных помехоустойчивых кодов является эффективным методом борьбы с искажениями, возникающими в канале [1]. Естественным требованием для обеспечения высокого уровня защищенности от помех является условие согласованности параметров используемого кода с характеристиками канала. Если же характеристики канала не могут быть точно определены (например, для каналов со случайной структурой), кодирование линейным кодом в общем случае является неэффективным.
Случайная структура канала может быть обусловлена многими факторами, имеющими как естественную, так и искусственную природу. Примерами естественных воздействий, приводящих к изменению характера возникающих ошибок, являются, например, случайное изменение состояния канала, накопление статического заряда, воздействие заряженных частиц, износ оборудования. Искусственные методы изменения характеристик канала часто заключаются в нестандартном физическом воздействии на канал. Примерами таких воздействий являются электромагнитное излучение, когерентное излучение (например, лазер), подавление и зашумление данных [2].
Уязвимость классических методов защиты со стороны каналов со случайной структурой может быть использована злоумышленником. В частности, преобразование исходного канала, с которым
1 Научный руководитель — доктор технических наук, профессор Е. Т. Мирончиков.
согласована информационная система, в канал со случайной структурой может быть осуществлено с помощью атак по сторонним каналам, называемых атаками по привнесенным ошибкам [2, 3]. Целью данного типа атак является вычисление секретных параметров систем обработки данных, например ключей шифрования. Как правило, атаки состоят из двух этапов: атакуемое устройство (канал) подвергается нестандартному внешнему физическому воздействию, после чего производится анализ результатов работы устройства. На основе полученных данных злоумышленник зачастую способен либо напрямую восстановить значение секретных ключей, либо заметно уменьшить мощность перебора.
Для работы с каналами со случайной структурой были разработаны классы нелинейных кодов — надежные коды и коды, обнаруживающие алгебраические манипуляции [4-7]. Требование нелинейности обусловлено тем, что у любого ^-ичного линейного кода существует как минимум qk - 1 необнаруживаемых ошибок, соответствующих кодовым словам, где £ — размерность кода. Это приводит к ситуации, когда, имея возможность определенным образом воздействовать на канал, злоумышленник способен провоцировать такое его состояние (и возникающую конфигурацию ошибок), при котором ошибки и атаки не могут быть обнаружены. Существуют классы нелинейных кодов, которые не имеют необнару-живаемых ошибок, любая ошибка обнаруживается с ненулевой вероятностью.
Надежные нелинейные коды предназначены для обнаружения ошибок (как естественного, так
и искусственного происхождения) при условии, что злоумышленник (источник ошибок в канале) не обладает знанием о передаваемых данных [4, 5]. Надежные коды гарантируют заданную ненулевую вероятность обнаружения любой конфигурации ошибок.
Нелинейные коды, обнаруживающие алгебраические манипуляции, позволяют обнаруживать любые ошибки с заданной вероятностью даже при условии, что злоумышленник обладает знанием о передаваемой информации [4, 6]. Это обеспечивается за счет рандомизации результата кодирования.
Защищенные коды, обнаруживающие алгебраические манипуляции
Рассмотрим следующую модель атаки [6, 7]:
— злоумышленник способен контролировать значение ошибок, возникающих в канале;
— ошибка аддитивна;
— злоумышленник способен контролировать передаваемое информационное сообщение.
Такая модель атаки называется сильной. Сильной модели атаки соответствует атака, при которой злоумышленник не только способен генерировать заданную ошибку, но и имеет возможность контролировать значение кодируемого сообщения. В этой ситуации злоумышленник, зная информационное сообщение, вычисляет получаемое кодовое слово, после чего выбирает значение ошибки, при внедрении которой текущее кодовое слово преобразуется в другое кодовое слово. Даже надежные нелинейные коды не могут гарантировать защиту от такой модели атаки.
Для защиты от сильных атак были предложены защищенные коды, обнаруживающие алгебраические манипуляции (strongly secure algebraic manipulation detection codes, strongly secure AMD codes). Для краткости будем называть их AMD-кодами.
Очевидно, что процесс кодирования должен иметь недетерминированный характер. В противном случае злоумышленник гарантированно вносит необнаруживаемую ошибку. Естественным путем решения этой проблемы является привнесение случайности в процесс кодирования, когда каждому сообщению соответствует множество кодовых слов, а выбор конкретного кодового слова из этого множества определяется некоторой случайной величиной, которую злоумышленник не способен контролировать. В этом случае, зная информационное сообщение, злоумышленник способен вычислить набор кодовых слов, одно из которых, в зависимости от значения случайной величины, может стать результатом кодирования. Далее атакующий выбирает значение ошибки, которое имеет наименьшую вероятность
обнаружения для заданного набора возможных кодовых слов. Другими словами, выбирается такая ошибка, которая не будет обнаружена при наибольшем количестве значений случайной величины для заданного исходного сообщения.
Для построения AMD-кодов используются различные математические объекты: коды аутентификации, разностные структуры, помехоустойчивые коды [4, 7]. Одной из наиболее исследованных и эффективных конструкций AMD-кодов является конструкция, основанная на полиномах. Наиболее полно этот класс AMD-кодов описан в работе [6], где значительная часть предлагаемых конструкций являются оптимальными в смысле вероятности обнаружения ошибки.
Далее будут рассматриваться систематические коды над полями характеристики 2. Кодовые слова систематического AMD-кода представляют собой конкатенацию информационного сообщения у е некоторой случайной вели-
чины х е т) и значения нелинейной функции /(у, х) е в^(2г). Сами AMD-коды определяются как коды, для которых не существует такой конфигурации ошибок
е = (еу е GF(2k), ех е ^(2т), е1 е ^(2Г))
и такого значения у, при возникновении которых равенство
/(у, х) + ег = /(у + ву, х + ех)
выполнится при всех возможных значениях х. Данное равенство называется уравнением маскирования ошибки (УМО). Легко заметить, что проверка выполнения этого равенства является аналогом вычисления синдрома принятого слова линейного кода.
Способность AMD-кода обнаруживать ошибки напрямую зависит от вида его УМО: максимальное количество решений УМО относительно х среди всех возможных комбинаций у, ех, еу, е/ и будет максимальным количеством необнару-живаемых кодом ошибок. Вероятность обнаружения ошибки ограничена снизу выражением
Pdet >1 - max У,е
\{x :f (y,x) + ef = f (y + ey,x + ex)}\
M '
(1)
которое непосредственно следует из сценария сильной атаки.
Код на основе умножения
Одной из конструкций AMD-кодов является конструкция, основанная на умножении в конечном поле [8]. Кодовое слово такого AMD-кода выглядит следующим образом:
(у | х | /(х, у) = ху),
где х, у, ^у, х) е (т. е. т = г = к), операция
умножения выполняется в поле СТ(2к), а символом «|» обозначена операция конкатенации. УМО такого кода выглядит следующим образом:
ху + е/ = (х + вх )(у + ву).
Легко заметить, что максимальное количество решений данного УМО относительно х при фиксированных у и e равно единице, так как
е/ хеу + уех + ехеу,
е/ + уех + ехе
Правая часть последнего выражения при фиксированной величине ошибки представляет собой константу; если случайная величина х равна этой константе, то привнесенная ошибка в = (ву, ех, в^) останется необнаруженной. Случайная величина х распределена равномерно, следовательно, вероятность обнаружения любой ошибки е при фиксированном у равна
|{х :/(у,х) + ег = /(у + еу ,х + ех )}| =
^=1 =
= 1 —— = 1 - 2-т = 1 - 2-к.
2т
Тут необходимо обратить внимание на то, что данный код неприменим при ву = 0, что накладывает ограничение на множество обнаруживаемых ошибок. Кроме того, это противоречит определению AMD-кодов, которое дано в работе [6]. Однако стоит отметить, что в некоторых других работах (например, в [7]) AMD-код определяется как код, который гарантированно обнаруживает ошибки только в информационной части кодового слова, т. е. когда ву Ф 0. Данное определение обусловлено требованиями многих практических задач, в которых важна целостность только информационной части у кодового слова [7]. Далее будем рассматривать лишь вероятность обнаружения ошибки е, у которой ву Ф 0.
Необходимо указать, что о целесообразности использования умножения в поле для обнаружения ошибок в каналах со случайной структурой писали еще В. И. Коржик и Л. М. Финк [8]. Предложенный ими универсальный метод стохастического кодирования для каналов со случайной структурой обеспечивает более низкую вероятность обнаружения ошибок. Кроме того, в их модели подразумевается, что приемник и передатчик имеют точно синхронизированную случайную величину х, что ограничивает область применения данного метода кодирования.
Использование AMD-кода, основанного на умножении, позволяет обеспечить максимально возможную вероятность обнаружения ошибки даже при условии искажения случайной величины.
Случайная величина х является частью кодового слова, передается по каналу и не требует дополнительной синхронизации передатчика и приемника.
Основным недостатком данной кодовой конструкции является отсутствие гибкости при выборе параметров кода [7]. Фактически, размер информационного сообщения к полностью определяет длину кода п = 3к, размер случайной величины к бит, а также вероятность обнаружения ошибки = 1 - 1/2к. Ниже будут представлены два варианта модификаций данной конструкции, которые предоставляют большую гибкость при выборе параметров кода.
Модификация на основе расширения случайной величины
Наиболее естественным методом модификации описанной конструкции является использование случайной величины из меньшего поля Галуа, т. е. х е в^(2т), т < к. Для выполнения умножения формируется вектор х е GF(2k) путем дополнения двоичного представления элемента х к - т нулями, т. е. выполняется отображение £(х) = х, X = (0,..., 0, хт-1,..., х0), где хт-1, ..., х0 есть двоичное представление элемента поля х. Полученный элемент большего поля х е GF(2k) используется для выполнения операции кодирования согласно оригинальной конструкции. Кодовое слово выглядит следующим образом:
с = (у е GF(2k )| х е GF(2m )| х ■ у е GF(2k)),
т. е. длина кода уменьшается на к - т бит.
На приемной стороне перед проверкой УМО полученная из канала случайная величина х + вх е в^(2т) еще раз подвергается отображению ё(х + ех) = х + ех.
Теорема 1. Вероятность обнаружения сильной атаки ограничена снизу выражением
Pdet > 1 - 2-т.
Доказательство: Рассмотрим формулу (1). Мощность множества значений случайной величины х, стоящая в знаменателе дроби, равна 2т. Необходимо определить значение числителя дроби из (1). Легко заметить, что для данной модификации исходной кодовой конструкции числитель дроби приобретает вид
|{х: /(у, х) + е/ = /(у + еу, х + ех), £(х) = х}| = = |{х:/(у,х) + е/ = /(у + еу, х + ех), (х)}|
т. е. добавляется условие, что для получаемого решения УМО должен существовать прообраз
е
у
среди х е GF(2m). Дополнительное ограничение на мощность множества приводит к тому, что обнаруживающая способность кода становится неравномерной. Если для оригинальной конструкции значение числителя было равно 1 для всех возможных у и е Ф 0, то при данной модификации некоторая часть комбинаций у и е ф 0 приведет к решениям УМО, которые не имеют прообраза относительно отображения ^(х), т. е. значение числителя будет равно 0. Таким образом, часть ошибок будет обнаруживаться с вероятностью Р^^) = 1 - 0/2т = 1, в то время как остальные — с Р^) = 1 - 1/2т = 1 - 2~т, где через Р^ф) обозначена вероятность обнаружения конкретной ошибки e при сильной атаке.
Таким образом, вероятность обнаружения сильной атаки для данной кодовой конструкции
Ра^ * 1 - 2_т.
Вывод по конструкции. Как видно, данная модификация кодовой конструкции AMD-кодов, основанной на умножении в поле, предоставляет возможность гибкого выбора длины кода и соответствующей вероятности обнаружения сильных атак. Зависимость вероятности обнаружения сильной атаки от размера случайной величины х аналогична оригинальной конструкции. Аппаратная сложность реализации данной модификации соответствует сложности оригинальной кодовой конструкции.
Модификация на основе разбиения информационного сообщения
Вторым вариантом модификации оригинальной кодовой конструкции является следующий: пусть Ь = ти (в противном случае либо уменьшается разрядность т случайной величины х, либо размер Ь информационного вектора у увеличивается до необходимого значения за счет добавления, например, нулей). Далее информационный вектор делится на и частей по т бит: у = (у1\у2\~\уи), где уг е GF(2m), I = 1, ..., и. Каждый у1 на основе случайной величины х подвергается процедуре кодирования согласно оригинальной конструкции, т. е. получаем набор из и кодовых слов:
0. = у е GF(2m) | х е GF(2m) | у1 ■ х е GF(2m)), I = 1,..., и,
т. е. выполняется и процедур кодирования сообщений у1 на основе фиксированной случайной величины х. Далее полученные промежуточные кодовые слова е1 объединяются в одно слово следующим образом:
с = (у | х | /(х,у)), с = (у1|у2 |...|уи |х|у1 ■х|у2 ■х|...|уи ■х).
Полученное кодовое слово имеет длину n = k + + m + k = 2k + m. На приемнике данное кодовое слово раскладывается в u кодовых слов
ci + ei = (Vi + ey. | x + | y ■ x + eA), i = 1, ..., u,
после чего выполняется u проверок их УМО. При обнаружении ошибки хотя бы в одном кодовом слове весь набор y = (yi^l—lyU признается ошибочным. Рассмотрим вероятность обнаружения сильных атак с помощью данной модификации AMD-кода.
Теорема 2. Вероятность обнаружения сильной атаки равна Pdet > 1 - 2-m.
Доказательство: Очевидно, что чем больше блоков yt (и, соответственно, кодовых слов с) подвергается атаке, тем меньше вероятность того, что ошибка не будет выявлена (предполагается, что вероятность успешной атаки меньше единицы). Таким образом, с позиции злоумышленника наиболее разумно атаковать один из u блоков yv При этом вероятность успеха атаки будет максимальна. Рассмотрим эту вероятность, так как именно она определяет нижнюю граниЦу Pdet.
Атаку одного из блоков yt можно рассматривать как атаку одного из кодовых слов оригинальной конструкции с параметрами y е GF(2m), х е GF(2m), f(y, x) е GF(2m), n = 3m. Получаем, что вероятность обнаружения сильной атаки одного блока Pdet = 1 - 2-m. Отсюда вероятность обнаружения сильной атаки кодового слова ограничена снизу:
Pdet > 1 - 2-m.
Необходимо отметить, что тот факт, что все u кодовых слов ct получены на основе одной и той же случайной величины x, не может быть использован для успешной атаки кодового слова c при данном методе декодирования. Если бы решение о наличии ошибок принималось независимо на уровне каждого блока, а не на уровне целого слова, то в этом случае злоумышленник был бы способен проводить атаку с более высокой вероятностью успеха. Для этого он бы для каждого из c£ случайно выбирал некоторые неповторяющиеся числа Xi е GF(2m), которые считал бы соответствующим значению х. Исходя из Xi рассчитывались бы такие значения ошибок e£, чтобы выполнялось УМО. Таким образом, злоумышленник смог бы перебрать u возможных значений случайной величины. В этом случае вероятность успешного внедрения ошибки в один из u блоков (т. е. успешная атака кодового слова c при таком методе декодирования) равнялась бы Pundet = u/2m при U < 2m и Pund6t = 1 при U > 2m. Соответственно, вероятность обнаружения ошиб-
ки на уровне кодового слова при и < 2т была бы равна Рш = 1 - и/2т.
Вывод по конструкции. Данная модификация позволяет достигнуть тех же характеристик, что и первая модификация. Аппаратная реализация умножения в конечном поле имеет квадратичную зависимость от степени расширения поля. Благодаря этому данная модификация позволяет значительно снизить сложность кодека за счет того, что умножение вычисляется в меньшем поле. Схема одного из вариантов реализации кодера приведена на рисунке.
На схеме изображено р умножителей в поле GF(2m). Их количество может варьироваться от 1 до и в зависимости от требуемой производительности. При р < и умножители будут использоваться повторно для различных у£, что приведет к увеличению временных затрат кодирования. При р = и сложность реализации кодера будет максимальна и составит порядка иО(т2), в то время как в других конструкциях, где умножение выполняется в СТ(2к), она имеет порядок О(к2), что сопоставимо со сложностью и2О(т2) данной модификации.
Заключение
В данной работе описан класс AMD-кодов, основанный на умножении в конечном поле. Приведена вероятность обнаружения сильных
Литература
1. MacWilliams J., Sloane N. J. A. The Theory of Error-Correcting Codes. — Amsterdam: North-Holland, 1977. — 762 p.
2. Zhou Y., Feng D. Side-Channel Attacks: Ten Years After Its Publication and the Impacts on Cryptographic Module Security Testing. http://eprint.iacr. org/2005/388.pdf (дата обращения: 07.04.2014).
3. Chen C. N., Yen S. M. Differential Fault Analysis on AES Key Schedule and Some Countermeasures // Proc. of the 8th Australasian Conf., ACISP 2003, Wollongong, Australia, July 9-11, 2003. P. 118-129. DOI:10.1007/3-540-45067-X_11
4. Jongsma E. Algebraic Manipulation Detection Codes. Bachelorscriptie, Mathematisch Instituut, Universit-eit Leiden, 6 maart 2008. https://www.math.leide-nuniv.nl/scripties/JongsmaBachelor.pdf (дата обращения: 07.04.2014).
5. Akdemir K. D., Wang Z., Karpovsky M. G., Sunar B. Design of Cryptographic Devices Resilient to Fault
■ Общая схема кодера для модификации АМЮ-кода, основанного на умножении
атак с помощью данного кода. Предложены две модификации этой конструкции, которые обеспечивают гибкость при выборе характеристик кода за счет варьирования размера случайной части в кодовом слове. Вероятность обнаружения сильной атаки для обеих модификаций имеет такую же зависимость от размера случайной величины, как и вероятность для оригинальной конструкции. Аппаратная сложность реализации второй модификации может быть значительно уменьшена за счет повторного использования имеющихся умножителей.
Injection Attacks Using Nonlinear Robust Codes// Fault Analysis in Cryptography/Ed. M. Joye. — Springer, 2011. — P. 171-200.
6. Wang Z., Karpovsky M. G. Algebraic Manipulation Detection Codes and Their Application for Design of Secure Cryptographic Devices // Proc. of Intern. Symp. on On-Line Testing (IOLTS), Athens, July 13-15, 2011. P. 234-239. D0I:10.1109/ IOLTS.2011.5994535.
7. Cramer R., Dodis Y., Fehr S., Padro C., Wichs D. Detection of Algebraic Manipulation with Applications to Robust Secret Sharing and Fuzzy Extractors // Proc. of the Theory and Applications of Cryptographic Techniques 27th Annual Intern. Conf. on Advances in Cryptology, ser. EUR0CRYPT'08, 2008. P. 471-488.
8. Финк Л. М., Коржик В. И. Помехоустойчивое кодирование дискретных сообщений в каналах со случайной структурой. — М.: Связь, 1975. — 272 c.
x
UDC 004.056.2
On the Detection of Algebraic Manipulations by Means of Multiplication Operation
Alekseev M. O.a, Lead Programmer, [email protected]
aSaint-Petersburg State University of Aerospace Instrumentation, 67, B. Morskaia St., 190000, Saint-Petersburg, Russian Federation
Purpose: It is well known that implementations of cryptographic algorithms are subject to side-channel attacks. One of the most effective attacks is a fault-injection attack followed by simple or differential fault. The attack involves a non-standard impact on a cryptographic device in order to inject faults in its operation. A model of the attack is called an algebraic manipulation. The goal of this paper is to study and to develop a countermeasure against this attack. Results: The countermeasure under consideration implies constructing a nonlinear error-control code which encoding function is a multiplication operation in a Galois field. There have been developed and described two modifications of a code structure based on extension of a random value and on information message splitting. These modifications allow varying such parameters as a code rate and an error detection probability, in many cases it leads to decrease of code redundancy. At the same time the second modification also tends to decrease hardware overheads of codec implementation. Practical relevance: Therefore, there has been obtained a flexible and easily implementable code structure which detects any error of transferred information with fixed probability even when an error value and coded data are correlated.
Keywords - Error Control Codes, Nonlinear Codes, Side-Channel Attacks, Algebraic Manipulations, Multiplication in Galois Field.
References
1. MacWilliams J., Sloane N. J. A. The Theory of Error-Correcting Codes. Amsterdam, North-Holland, 1977. 762 p.
2. Zhou Y., Feng D. Side-Channel Attacks: Ten Years After its Publication and the Impacts on Cryptographic Module Security Testing. Available at: http://eprint.iacr. org/2005/388.pdf (accessed 7 April 2014).
3. Chen C. N., Yen S. M. Differential Fault Analysis on AES Key Schedule and Some Countermeasures. Proc. of the 8th Australasian Conf., ACISP 2003, Wollongong, Australia, July 9-11, 2003, pp. 118-129. D0I:10.1007/3-540-45067-X_11
4. Jongsma E. Algebraic Manipulation Detection Codes. Bachelorscriptie, Mathematisch Instituut, Universiteit Leiden, 6 maart 2008. Available at: https://www.math. leidenuniv.nl/scripties/JongsmaBachelor.pdf (accessed 7 April 2014).
5. Akdemir K. D., Wang Z., Karpovsky M. G., Sunar B. Design of Cryptographic Devices Resilient to Fault Injection
Attacks Using Nonlinear Robust Codes. Fault Analysis in Cryptography. M. Joye Ed. Springer, 2011. P. 171-200.
6. Wang Z., Karpovsky M. G. Algebraic Manipulation Detection Codes and Their Application for Design of Secure Cryptographic Devices. Proc. of Intern. Symp. on On-Line Testing (IOLTS), Athens, July 13-15, 2011, pp. 234-239. D0I:10.1109/I0LTS.2011.5994535
7. Cramer R., Dodis Y., Fehr S., Padro C., Wichs D. Detection of Algebraic Manipulation with Applications to Robust Secret Sharing and Fuzzy Extractors. Proc. of the Theory and Applications of Cryptographic Techniques 27th Annual Intern. Conf. on Advances in Cryptology, ser. EUROCRYPT'08, 2008, pp. 471-488.
8. Fink L. M., Korzhik V. I. Pomekhoustoichivoe kodirovanie diskretnykh soobshchenii v kanalakh so sluchainoi struk-turoi [Error Correcting Coding of Discrete Messages in Channels with Random Structure]. Moscow, Sviaz' Publ., 1975. 272 p. (In Russian).