Научная статья на тему 'Методы компьютерного моделирования булевых функций с максимальным значением нелинейности'

Методы компьютерного моделирования булевых функций с максимальным значением нелинейности Текст научной статьи по специальности «Математика»

CC BY
357
35
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ / БУЛЕВЫ ФУНКЦИИ / КОМБИНАТОРНЫЙ АНАЛИЗ / НЕЛИНЕЙНОСТЬ / БЕНТ-ФУНКЦИИ / COMPUTER SIMULATION / BOOLEAN FUNCTIONS / COMBINATORIAL ANALYSIS / NONLINEARITY / BENT-FUNCTION

Аннотация научной статьи по математике, автор научной работы — Кузьмин Олег Викторович, Гайнулин Николай Амирович

В данной работе рассматриваются методы компьютерного моделирования максимально нелинейных булевых функций четного числа аргументов (бент-функций). Все бент-функции фиксированного числа аргументов обладают одинаковым весом Хэмминга. В задаче перечисления функций с максимальным значением нелинейности данное свойство позволяет ограничить множество функций, для которых требуется проводить ресурсоемкие вычисления. Получена верхняя оценка количества бент-функций от фиксированного числа аргументов. Рассматривается алгоритм вычисления нелинейности булевых функций, который опирается на свойство матриц Сильвестра Адамара, позволяющий существенно сократить количество процессорного времени, требующегося для вычисления нелинейности заданной булевой функции. Рассматривается вопрос максимально компактного размещения (0, 1)-матриц в памяти компьютера. Приведен исходный код программы на языке C++, реализующий эффективное с точки зрения компьютерной памяти построение (0, 1)-матриц. Работа выполнена при поддержке Иркутского государственного университета, индивидуальный исследовательский грант № 091-16-211.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

METHODS OF COMPUTER SIMULATION OF BOOLEAN FUNCTIONS WITH MAXIMUM VALUE OF NONLINEARITY

This paper discusses the methods of computer simulation of the Boolean functions of an even number of arguments with maximum value of nonlinearity (bent functions). All bent functions of a fixed number of arguments have the same Hamming weight. In the problem of the functionы with maximum value of nonlinearity enumeration, this property allows to restrict the set of functions for which performance computing is required to carry out. The work contains an upper estimate of the number of bent functions with a fixed number of arguments and an algorithm for calculating the nonlinearity of Boolean functions, which is based on the properties of the Sylvester-Hadamard matrix. This algorithm can significantly reduce the amount of CPU time required to calculate non-linearity of a given Boolean function. Authors consider the question of (0, 1)-matrices most compact accommodation in memory. The paper contains the source code of C++ program, which implements effective (0, 1)-matrices memory construction from the point of view computer.

Текст научной работы на тему «Методы компьютерного моделирования булевых функций с максимальным значением нелинейности»

вычислительная техника и управление

11. Голубчик Э.М. Адаптивное управление качеством металлопродукции // Вестник Магнито-гор. гос. техн. ун-та им. Г.И. Носова. 2014. №1. С. 63-69.

12. Российская энциклопедия по охране труда. В 3 т. М. : Изд-во НЦ ЭНАС, 2007.

13. ГОСТ 27.004-85. Системы технологические. Термины и определения. М. : ИПК Издательство стандартов, 1986. 9 с.

14. Багров Н.М., Трофимов Г.А., Андреев В.А. Основы отраслевых технологий. СПб. : Изд-во СПбГУ-ЭФ, 2010. 256 с.

15.Полякова М.А., Голубчик Э.М., Гулин А.Е. Adaptive Approach to Quality Management in Combined Methods of Materials Processing. Applied Mechanics and Materials 2014. Vol. 656. pp 497-506.

16. Богданов А.А. Тектология (Всеобщая организационная наука). Кн. 1. М. : Экономика, 1989. 304 с.

17.Хубка В. Теория технических систем. М. : Мир, 1987. 202 с.

18. Рубин Г.Ш., Полякова М.А. Использование функционально-целевого анализа для развития научных основ стандартизации // Вестник Маг-нитогор. гос. техн. ун-та им. Г.И. Носова. 2014. № 1. С. 97-102.

19. Рубин ГШ., Данилова Ю.В., Полякова М.А. Функционально-целевой анализ как метод структурирования функций и свойств металлоизделий // Производство проката. 2015. № 5. С. 27-31.

20. Рубин Г.Ш., Данилова Ю.В., Полякова М.А. Функционально-целевой анализ как метод структурирования функций и свойств металлоизделий // Производство проката. 2015. № 6. С.38-43.

УДК 519.142.1:519.725 Кузьмин Олег Викторович,

д. ф.-м. н., профессор, Иркутский государственный университет, тел. 8(3952)42226, e-mail: [email protected] Гайнулин Николай Амирович, аспирант, Иркутский государственный университет, кафедра теории вероятностей и дискретной математики, тел. 8(904)1292736, e-mail: [email protected]

МЕТОДЫ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ БУЛЕВЫХ ФУНКЦИЙ С МАКСИМАЛЬНЫМ ЗНАЧЕНИЕМ НЕЛИНЕЙНОСТИ

O. V. Kuzmin, N. A. Gaynulin

METHODS OF COMPUTER SIMULATION OF BOOLEAN FUNCTIONS WITH MAXIMUM VALUE OF NONLINEARITY

Аннотация. В данной работе рассматриваются методы компьютерного моделирования максимально нелинейных булевых функций четного числа аргументов (бент-функций). Все бент-функции фиксированного числа аргументов обладают одинаковым весом Хэмминга. В задаче перечисления функций с максимальным значением нелинейности данное свойство позволяет ограничить множество функций, для которых требуется проводить ресурсоемкие вычисления. Получена верхняя оценка количества бент-функций от фиксированного числа аргументов. Рассматривается алгоритм вычисления нелинейности булевых функций, который опирается на свойство матриц Сильвестра - Адамара, позволяющий существенно сократить количество процессорного времени, требующегося для вычисления нелинейности заданной булевой функции. Рассматривается вопрос максимально компактного размещения (0, 1)-матриц в памяти компьютера. Приведен исходный код программы на языке C++, реализующий эффективное с точки зрения компьютерной памяти построение (0, 1)-матриц.

Работа выполнена при поддержке Иркутского государственного университета, индивидуальный исследовательский грант № 091-16-211.

Ключевые слова: компьютерное моделирование, булевы функции, комбинаторный анализ, нелинейность, бент-функции.

Abstract. This paper discusses the methods of computer simulation of the Boolean functions of an even number of arguments with maximum value of nonlinearity (bent functions). All bent functions of a fixed number of arguments have the same Hamming weight. In the problem of the functionbi with maximum value of nonlinearity enumeration, this property allows to restrict the set offunctions for which performance computing is required to carry out. The work contains an upper estimate of the number of bentfunctions with a fixed number of arguments and an algorithm for calculating the nonlinearity of Boolean functions, which is based on the properties of the Sylvester-Hadamard matrix. This algorithm can significantly reduce the amount of CPU time required to calculate non-linearity of a given Boolean function. Authors consider the question of (0, 1)-matrices most compact accommodation in memory. The paper contains the source code of C++ program, which implements effective (0, 1)-matrices memory construction from the point of view computer.

Keywords: computer simulation, Boolean functions, combinatorial analysis, nonlinearity, bent-function.

Введение

Бент-функции - это булевы функции, обладающие максимальным значением нелинейности. Мера нелинейности является важной характеристикой булевой функции в криптографии. Линейность и близкие к ней свойства часто свидетельствуют о простой (в определённом смысле) структуре этой функции и, как правило, представляют собой богатый источник информации о многих других ее свойствах. Применение векторных булевых функций с высоким значением нелинейности в алгоритмах блочного шифрования рассматривается в работе [1].

Бент-функции были введены О. Ротхаусом в 60-х годах XX века. Также к числу первых работ по этой теме относятся и исследования американских математиков Дж. Диллона и Р. Мак-Фар-ланда, которые в 70-х годах рассматривали бент-функции в связи с разностными множествами. С 80-х годов бент-функции начинают интенсивно изучаться по всему миру. В настоящее время известны сотни работ о бент-функциях и близких вопросах.

Максимально нелинейную функцию можно определить как крайне плохо аппроксимируемую аффинными функциями. В блочных и поточных шифрах максимально нелинейные функции и их векторные аналоги способствуют предельному повышению стойкости этих шифров к линейному и дифференциальному методам криптографического анализа - основным статистическим методам криптоанализа шифров. Например, в 1993 году была обнаружена существенная слабость к линейному криптоанализу блочного шифра DES. Этот шифр являлся стандартом симметричного шифрования США на протяжении почти двадцати лет (с 1980 года по 1998 год). Слабость шифра, которая привела к успешной атаке на него, заключалась в плохих криптографических свойствах его нелинейных компонент, так называемых S-блоков. В терминах дискретной математики S-блок - это векторная булева функция, отображающая n входных битов в m выходных битов. Именно эти булевы функции в шифре DES не отвечали необходимым криптографическим требованиям, что и послужило причиной успеха метода линейного криптоанализа. Шифр DES оказался нестойким и к дифференциальному методу криптоанализа. Причина вновь заключалась в слабых S-блоках. Стойкость шифров к упомянутым методам криптоанализа достигается за счет использования максимально нелинейных функций, их аналогов и обобщений при построении S-бло-ков. Это было сделано, например, в канадском

шифре CAST и новом американском стандарте AES.

Бент-функции применяются в технологии цифровой сотовой связи CDMA (Code Division Multiple Access - множественный доступ с кодовым разделением каналов). Для оценки сигнала в CDMA используется коэффициент отношения пиковой и средней мощностей сигнала. Чем данный коэффициент ниже, тем сигнал считается лучше, так как снижаются затраты на усилители мощности и повышается надежность связи. Минимальное значение данного коэффициента достигается на кодовых словах специального вида. Такими словами являются векторы значений бент-функций. Коды, состоящие из этих слов, называются кодами постоянной амплитуды. Так возникает задача построения кодов постоянной амплитуды наибольшей мощности и обладающих хорошей структурой, т. е. задача выбора специальных подмножеств множества бент-функций.

Другие применения максимально нелинейных булевых функций рассматриваются в работе [2].

Несмотря на широкий интерес исследователей, класс бент-функций от n переменных до сих пор не описан, для мощности этого класса не найдена асимптотика и не установлено даже приемлемых нижних и верхних оценок. Проблемой является и классификация бент-функций (от 10, 12 и т. д. переменных). Тем самым возникает практическая потребность в изобретении новых конструкций бент-функций и эффективных алгоритмов их генерации.

Основные определения и утверждения

Пусть F2 = {0,1} - поле характеристики 2, Vn = F2 X . . . X F2 - векторное пространство кортежей

п

длины n с компонентами из поля F2.

Определение 1. Пусть v = (v(1).....v(n)),

и = (и(1\ ...,и(п)), u,v EVn - вектора из Vn. Скалярным произведением векторов v и и называется величина

(v,u) = v(1)u(1) © ...©v(n)u(n), где © - сложение по модулю 2.

Определение 2. Булевой функцией от n переменных называется отображение из Vn в F2. Множество всех булевых функций от n переменных обозначается Fn.

Определение 3. Вес Хэмминга булевой функции f определяется равенством

wt(f) = l{xEVn:f(x) = 1}l.

вычислительная техника и управление

Определение 4. Расстояние Хэмминга между булевыми функциями f и д определяется равенством

dist(f,g) = 1{х е Vnlf(x) * д(х)}1 = wt(f®g).

Определение 5. Алгебраической степенью функции f называется число переменных в самом длинном слагаемом полинома Жегалкина функции /. Алгебраическая степень обозначается degf.

Обозначим через Ап множество булевых функций из Тп, для которых degf < 1. Такие функции называются аффинными функциями, а Ап - множеством (классом) аффинных функций. Аффинные функции, для которых f(0) = 0, называются линейными функциями.

Определение 6. Расстоянием от булевой функции f е Тп до множества М называется величина

dist(f,M) = min dist(f,g).

дем

Определение 7. Нелинейностью булевой функции f называется расстояние между функцией f е Тп и множеством аффинных функций Ап, обозначаемое nl(f). Булевы функции от фиксированного четного числа переменных, нелинейность которых максимальна, называются бент-функциями.

Определение 8. Преобразование Уолша -Адамара булевой функции f есть функция Wf (и) :Vn ^ Ъ, определяемая как

Wf(u) = £хеуп(-1)ПхШх'и),и е Vn. (1)

Значения функции W^(u) называются спектральными коэффициентами функции /.

Утверждение 1. Нелинейность булевой функции f и соответствующее преобразование Уолша - Адамара связаны соотношением

nl(f) = 2п-1-1maxlWf(u)l (2)

Утверждение 2. Если f - бент-функция из Тп, то для любого вектора и еУп имеем IWf(u)l = 2п/2.

Доказательства утверждений 1 и 2 могут быть найдены в [3].

Вес Хэмминга бент-функций

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

Утверждение 3. Если f е Тп - бент-функ-ция, то wt(f) = 2п-1 + 2П/2-1 или wt(f) =

2

п-1

2П/2-1.

(-1)™ = {Д

Доказательство. Рассмотрим два множества А = [хеУп\Цх) = 1} и В = {хеУп\Цх) = 0}, а = 1А1 = wt(f), Ь = 1В1 - количество векторов в каждом из множеств. Очевидно, что А П В = 0 и А и В = Уп. Значит, справедливо равенство

а + Ь = 2п. (3)

Из определения 8 и утверждения 2 следует,

что

Шг(0) = Т2п'2. (4)

Так как

1, /(х) = 0,

а*) = 1,

то равенство (4) можно переписать в виде Ь-а = Т2п'2.

Решая систему уравнений (3) и (4), получаем шЬ^) = 2п-1 + 2П/2-\ что и требовалось доказать.

Обозначим количество бент-функций от п переменных как Вп.

Следствие 1.

2 • 2п!

Г> <; _

~ (2п-1 + 2П/2-1)! (2п-1 - 2П/2-1)\'

Доказательство. Вес Хэмминга булевой функции можно интерпретировать как количество единиц в таблице истинности. Из утверждения 3 следует, что число бент-функций не превосходит удвоенного числа сочетаний из 2п элементов по 2п-1 + 2^12-х элемента.

Таким образом, поиск бент-функций следует проводить среди функций с весом Хэмминга, равным Множество таких функции обозначим Вп.

В табл. 1 приведены численные значения 1Тп | для некоторых п.

Т а б л и ц а 1

и 1В„

п 1Тп1 Вп

2 16 8

4 65536 16016

6 264 « 261

8 2256 « 2252

10 21024 « 21019

Вычисление нелинейности

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

Расположим вектора из Уп в лексикографическом порядке и присвоим им номера от 1 до 2п. Таким образом, получаем последовательность =

(0, ...,0,0), р2 = (0, .„,0,1), Р2п = (1, ...,1,1).

Определение 9. Матрицы вида

Но = ах нг = (1 1

н7 =

1

11 -1 1 -1 1 1 -1-11, -1 -1 1

нп =

нп—i Ну, _

п-1

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

я,

п — 1

н,

п—1

(5)

называют матрицами Сильвестра - Адамара. Эти матрицы обладают следующим свойством.

Утверждение 4. На пересечении ¿-й строки и у'-го столбца матрицы Нп стоит элемент, равный (—1){^\ где V] 6 Уп.

Доказательство данного утверждения приведено в [1].

Из формул (1) и (2) следует, что для каждой функции потребуется вычислить 2п спектральных коэффициента, каждый из которых, в свою очередь, требует вычисления 2п скалярных произведения. Суммарное количество операций можно оценить величиной 0(22п). Однако знание того, что элементы матриц (5) равны (— (утверждение 4), позволяет избежать многократного вычисления скалярных произведений. Таким образом, один раз вычислив матрицу Сильвестра - Адамара нужного порядка, можно сократить количество операций, необходимых для вычисления нелинейности булевой функции. Реализации алгоритма вычисления нелинейности и методов построения бент-функций приведены в работах [4] и [5].

Рассмотрим задачу об объеме компьютерной памяти, необходимом для реализации данного алгоритма. Из определения 9 следует, что при увеличении числа переменных п на 1 количество элементов матрицы Нп увеличится в четыре раза. Встает проблема эффективного размещения данных матриц в памяти компьютера.

Очевидно, что любой матрице Нп, состоящей из элементов , можно сопоставить мат-

рицу Нп, содержащую элементы Vу). Пользуясь определением 1, легко заметить, что элементы

матриц Нп равны или 0, или 1. Свойства (0,1)-мат-риц рассматриваются в работе [6]. Таким образом, в 1 байте можно разместить 8 элементов матрицы Нп. Количество элементов Нп равно 22п (2п строк по 2п элементов). Для хранения одной строки требуется 2п-3 байт. Также для каждой строки требуется указатель, с помощью которого можно читать и записывать элементы. В 64-битных системах указатель занимает 8 байт. Итого требуется 2п(2п-3 + 8) байт для размещения матрицы Нп в памяти компьютера. Заметим, что матрицы Нп симметричны, поэтому достаточно хранить лишь половину элементов данных матриц, однако это затруднит доступ к произвольному элементу матрицы. В табл. 2 приведены объемы памяти необходимые для хранения некоторых матриц Нп.

Т а б л и ц а 2 Объем требуемой памяти

п Кол-во памяти Нп Кол-во элементов матрицы Нп

4 160 байт 256

6 1 Кбайт 4096

8 10 Кбайт 65536

10 136 Кбайт 1048576

12 2080 Кбайт 16777216

14 32896 Кбайт 268435456

16 512,5 Мбайт 4294967296

18 «8 Гбайт 68719476736

20 «128 Гбайт 1099511627776

Далее приведен код функции на языке C++, которая строит матрицу Н16.

uint8_t** hmatrix() {

// Инициализация матрицы Н3. uint8_t** newmatrix = nullptr; uint8_t** oldmatrix = new uint8_t*[8];

for (uint64_t i=0; i<8; i++) {

oldmatrix[i] = new uint8_t[1];

}

вычислительная техника и управление

oldmatrix[0] [0] = 0;

oldmatrix[1][0] = 85;

oldmatrix[2] [0] = 51;

oldmatrix[3p] = 102;

oldmatrix[4] [0] = 15;

oldmatrix[5][0] = 90;

oldmatrix[6][0] = 60;

oldmatrix[7][0] = 105;

// Построение матрицы 'Hn из матрицы

Hn—1.

// Максимальное число переменных MAX_NVARS = 16.

for (uint64_t nvar=4;

nvar<=MAX_NVARS; nvar++) {

uint64_t oldsize = 1<<(nvar-1); uint64_t oldrowsize = 1<<(nvar-4); uint64_t newsize = 1<<nvar; uint64_t newrowsize = 1<<(nvar-3); newmatrix = new uint8_t* [newsize];

for (uint64_t i=0; i<newsize; i++) {

newmatrix[i] = new

uint8_t[newrowsize]; }

for (uint64_t i=0; i<oldsize; i++) {

for (uint64_t j=0; j<oldrowsize; j++) {

newmatrix[i][j] = oldmatrix[i][j]; newmatrix[i][j+oldrowsize] =

oldmatrix[i][j];

newmatrix[i+oldsize][j] = oldma-

trix[i][j];

newmatrix[i+oldsize][j+oldrowsize] = ~oldmatrix[i][j];

// Освобождение неиспользуемой памяти. }

delete[] oldmatrix[i];

}

delete[] oldmatrix; oldmatrix = newmatrix;

}

return oldmatrix;

}

Заметим, что можно сократить число операций сложения при вычислении спектральных коэффициентов по формуле (1). Для этого каждому

байту b = b1b2b3b4b5b6b7b8, где bi Е {0, 1}, 1 < i < 8, сопоставим число S(b) = 'Zf=1(-1)bi. Храним полученное отображение в памяти. Далее для каждого спектрального коэффициента W (и) разобьем множество значений функции f(x) © (х, и), х Е Vn на непересекающиеся подмножества по 8 элементов произвольным способом. Теперь для вычисления Wf(u) достаточно просуммировать значения S( b) для каждого подмножества. Данный способ позволяет сократить количество операций сложения в 8 раз, при этом расход памяти увеличится всего на 256 байт.

Выводы

Использование утверждения 2 и метода вычисления нелинейности, основанного на свойстве матриц Сильвестра - Адамара, позволяет получить эффективный метод перечисления бент-функций от заданного числа переменных.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Гайнулин Н.А., Кузьмин О.В. Использование векторных булевых функций с высоким значением нелинейности в криптографии // Транспортная инфраструктура Сибирского региона : материалы Седьмой междунар. науч.-практ. конф. Иркутск, 2016. С. 281-285.

2. Токарева Н. Н. Нелинейные булевы функции: бент-функции и их обобщения // Издательство LAP, 2011. 180 c.

3. Логачев O. A. Булевы функции в теории кодирования и криптологии / О.А. Логачев и др. М. : МЦНМО, 2012. 584 с.

4. Гайнулин Н.А. Основные алгоритмы первичных конструкций бент-функций // Информационные технологии и проблемы математического моделирования сложных систем. 2015. Вып. 13. С. 33-39.

5. Гайнулин Н.А. Алгоритм вычисления нелинейности векторной булевой функции // Информационные технологии и проблемы математического моделирования сложных систем. 2015. Вып. 14. С. 27-32.

6. Кузьмин О.В., Евсевлеева Л.Г. О глубине симметричных (0,1)-матриц // Современные технологии. Системный анализ. Моделирование. 2010. № 2 (26). С. 57-59.

i Надоели баннеры? Вы всегда можете отключить рекламу.