Генерация частично бент-функций

Автор: Наумов Максим Викторович

Журнал: Сибирский аэрокосмический журнал @vestnik-sibsau

Рубрика: Математика, механика, информатика

Статья в выпуске: 5 (31), 2010 года.

Бесплатный доступ

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

Булевы функции, частично бент-функции, корреляционная иммунность

Короткий адрес: https://sciup.org/148176340

IDR: 148176340

Текст научной статьи Генерация частично бент-функций

В работе использованы следующие обозначения.

Z 2 = { 0, 1 }; n N , G = { 0, 1 } n – множество всех двоичных векторов длины п ;

– сумма по модулю 2, u v – вектор, каждый бит которого равен сумме по модулю 2 соответствующих бит векторов u и v ;

( u , v ) = u 1 v 1 ... unvn – скалярное произведение векторов u и v из G ;

f : G → {0, 1} – булева функция от n переменных;

w ( f ) = |{ s G : f ( s ) 0 }| – вес функции f ;

P 2 ( n ) – множество булевых функций от n переменных;

Wf ( s ) = ( - 1) f ( x ) + ( x , s ) – преобразование Уолша– x G

Адамара функции f , W f : G → Z ;

NW f – количество ненулевых значений функции W f ( s );

∆f (s) = ∑(-1)f(x)+f(x⊕s) – функция автокорреля-x∈ G ции, Δ f : G → Z;

N Δ f – количество ненулевых значений функции автокорреляции;

d ( f , g ) = |{ s G : f ( s ) g ( s )}| = w ( f g ) – расстояние по Хэммингу между f и g из P 2 ( n );

d(f, T) = min d(f, g) – расстояние между функци-g∈T ей f ∈ P2 (n) и множеством T ⊂ P2 (n) ;

x 0 = 1, x 1 = x , f ( x , ..., x ) =    ⊕ a      x i 1 ... x in

1                n          (i1,...,in)∈G i1,...,in 1                  n представление функции f ∈ P2 (n) в виде алгебраической нормальной формы (АНФ), ai ,...,i ∈ {0, 1};

n deg ( x1i1 ⋅ ... ⋅ xnin ) = ∑ik – степень монома k=1

x 1 i 1 ... xn in , число входящих в него переменных;

deg f – степень функции f , наибольшая из степеней мономов ее АНФ;

A ( n ) = { ( a , x ) a 0 : a G , a 0 {0, 1} }– класс аффинных функций, A ( n ) P 2 ( n ) ;

Nf = d ( f , A ( n )) – нелинейность функции f ;

КИ( m ) – корреляционная иммунность порядка m ;

КР( m ) – критерий распространения порядка m .

Основные понятия. Для генерации частично бент-функций применяются обычные бент-функции.

Бент-функцией называется функция f P 2 ( n ) , у которой Wf ( s ) = ± 2 n /2 для всех s G .

Утверждение [1]. f – бент-функция, если и только если для всех s G , s 0 выполняется условие Δ f ( s ) = 0.

Бент-функции существуют только для четного n , так как W f – целочисленная функция.

Бент-функции можно генерировать с помощью следующей теоремы.

Теорема ( конструкция Мейорана–МакФарланда ) [2]. Пусть h – любая перестановка на Z 2 n /2 , g – произвольная булева функция от n /2 переменных. Тогда функция f ( u , u ′′ ) = ( u , h ( u ′′ )) g ( u ′′ ) является бент-функцией от n переменных.

Функция f P 2 ( n ) называется корреляционноиммунной порядка m (КИ( m )), если любая ее подфункция от ( n m ) переменных, полученная фиксаци- w ( f )

ей остальных m переменных, имеет вес m . Очевидно, что если функция КИ( m ), то она КИ( k ) для любого k m .

Известно, что f ( x ) КИ( m ), если и только если Wf ( s ) = 0 для всех s G таких, что 1 w ( s ) m .

Корреляционная иммунность позволяет противостоять корреляционной атаке.

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

Говорят, что функция f удовлетворяет критерию распространения (КР) по направлению a , если Δ f ( a ) = 0, т. е. производная Da f = f ( x ) f ( x a ) сбалансирована.

Выполнение критерия распространения по направлению a приводит к тому, что f ( x ) = f ( x a ) с вероятностью 0,5, т. е. знание значения f ( x a ) не поможет нам узнать f ( x ) .

Говорят, что функция f удовлетворяет критерию распространения порядка m (КР( m )), если Δ f ( s ) = 0 для всех s G таких, что 1 w ( s ) m .

Критерий распространения – это свойство, которое характеризует поведение функции в момент, когда некоторые ее координаты инвертированы. Это свойство булевой функции подобно свойству диффузии для криптосистемы. Функции, применяемые в блочных шифрах, должны иметь высокий порядок КР.

Частично бент-функции. Функция f е P 2 ( n ) называется частично бент-функцией, если NW f N A f = 2 n .

Для любой бент-функции по определению NW f = 2 n , а по критерию Ротхауза N A f = 1, поэтому класс бент-функций содержится в классе частично бент-функций.

Частично бент-функции представляют интерес в криптографии, потому что для них произведение NW f N A f. имеет минимальное значение, что дает основание надеяться на то, что число ненулевых значений преобразования Уолша–Адамара и функции автокорреляции также мало, однако это совсем не гарантирует КИ и КР, ведь может оказаться W f ( 5 ) * 0 или A f ( 5 ) * 0 на единственном векторе 5 веса 1. Очевидно, частично бент-функции могут удовлетворять критерию распространения по многим направлениям (в зависимости от N A f ), важному свойству безопасности.

Обычные бент-функции используются в стандарте связи CDMA, в блоках замены (S-boxes), в некоторых шифрах, хэш-функциях [3]. Возможно, частично бент-функции можно использовать в тех же самых областях.

Генератор частично бент-функций 1. Генерировать частично бент-функции можно с помощью следующей теоремы.

Теорема 1 [4]. Функция f е P 2( n ) является частично бент-функцией тогда и только тогда, когда существует невырожденная матрица A с элементами из Z 2 и вектор р е Z 2 такие, что f ( xA ФР ) = = g ( x о ) Ф ( X 1 , t ), где X = ( X 0 x j, X е Z 2 , x о е Z 22 h , x е Z 2 n - 2 h , t е Z 2 n - 2 h ; g - бент-функция.

Опишем этот генератор и вспомогательный генератор невырожденной матрицы. Бент-функции будем строить с помощью конструкции Мейорана– МакФарланда.

Генератор невырожденной матрицы

Вход: n е N .

Выход: невырожденная матрица А размерности n х n .

  • 1.    Будем представлять матрицу A как множество строк. Возьмем в качестве ее первой строки произвольный ненулевой вектор e 1 длины n , A = { e 1 }. Пусть M = {0, e 1 }. Под M будем понимать линейную оболочку строк матрицы A .

  • 2.    Если в A есть n строк, т. е. M = G , то возвращаем A.

  • 3.    Берем произвольный вектор e е G \ M .

  • 4.    A = A и e , M = M и { m Ф e : m е M }.

  • 5.    Идем на шаг 2.

Генератор частично бент-функций 1

Вход: n е N , 0 h <^ n / 2 J .

Выход: r е P 2( n ) - частично бент-функция или ответ «не существует».

  • 1.    Если n = 2 h , то генерируем бент-функцию r е P 2( n ) и возвращаем ее.

  • 2.    Генерируем бент-функцию g ( x 0 ) на Z 2 2 h и произвольный вектор t е Z 2 2 h .

  • 3.    Для всех x = ( x 0 x , ) е G полагаем f ( x ) = g ( x 0 ) ф ( x , , t ).

  • 4.    Генерируем невырожденную матрицу A и вектор Ре Z n .

  • 5.    Для всех x е G полагаем r ( x ) = f ( xA Ф P ). Возвращаем r .

Замечание . Нелинейность функции r ( x ) равна Nr = 2 n - 1 - 2 n - h - 1 . Такая же нелинейность у функций, которые выдает генератор 2. Это следует из теорем, которые приводятся в [5].

Определенные на подпространстве бент-функции. Следующие три определения взяты из [6].

Пусть S с G . Функция f : S ^ {0,1} называется частично определенной булевой функцией. Обозначать такие функции мы будем f | S , а называть просто – функциями, определенными на S .

Неполным преобразованием Уолша–Адамара для f называется функция Wf (и) = ^ (-1)f(u)+(u,и) , опреде-и е S ленная на G.

Функция f – частично определенная бент-функция, если для всех и е G выполняется W f ( и ) = ± ^J | S |. Мы будем называть f бент-функцией, определенной на S .

Пусть E' - подпространство G и f - функция, определенная на     E '.     Введем функцию

A^ E ' ( и ) = ^ ( - 1) f ( u ) + f ( uФи) , определенную на E ', и на и е E '

зовем ее функцией автокорреляции для f на подпространстве E (определение из [7]).

Приведенное ниже утверждение 2 будет использовано в генераторе 2 частично бент-функций.

Утверждение 1 [7] (характеризация определённых на подпространстве бент-функций). Пусть E' - подпространство G с базисом { e 1, ... , e 2 h } и f – частично определенная функция на нем.

f - частично определенная бент-функция на E' , если и только если для всех 5' е E ', 5 ‘ * 0 выполняется A EE ' ( 5 ') = 0.

Сформулируем и докажем следующее утверждение.

Утверждение 2 (о бент-функции, определённой на подпространстве). Пусть E' - подпространство G с базисом { e1, ... ,e2h } и f – функция, определенная на E'.

Определим булеву функцию g от 2 h переменных так:

V x = x ... x 2 h e Z 22 h , g ( x ) = f ( xe e ... Ф x 2 h e 2 h ).

Тогда

  • V 5 ‘e E ', s' * 0, A E ' ( s ' ) = 0    о g - бент-

  • функция.
  • > x' = x 1 e 1 e ... e x 2 h e 2 h , s ' = s 1 e 1 e ... e s 2 h e 2 h ,

AE' (s') = У (-1)f(x')+f(x'®s') = У (-1)g(x)+g(xes) = A (s), f         x-                        x ez2 h                         g

V s ‘e E ' , s '* 0;

A EE' ( s ' ) = 0 о V s e Z 2 2 h , s * 0;

A g ( s ) = 0. <

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

Генератор частично бент-функций 2. В [5] было впервые введено понятие частично бент-функции и сформулирована приведенная ниже теорема.

Теорема 2. Любая функция f e P 2 ( n ) удовлетворяет неравенству NW f N A f 2 n .

Следующие утверждения эквивалентны:

  • а )    функция f – частично бент-функция;

  • б)    3 z e G , V s e G , A f ( s ) = 0 vA f ( s ) = ( - 1) ( s z ) 2 n ;

  • в )    G разлагается в прямую сумму подпространств E = { x e G : A f ( x ) * 0} и E ( E четной размерности) так, что f | E ,     - бент-функция и

  • Vx e E, Vy e E', f (x e y) = f (y) ® (x, z). Здесь z – любое из тех, которые могут быть выбраны в пункте (б).

Поскольку вектор z встречается и далее в теореме 3, назовем его базовым вектором аффинной части для частично бент-функции f .

Следующий генератор основан на теореме 2 и утверждении 2:

Вход: n e N , 0 h < ^ n / 2 J .

Выход: f e P 2( n ), N = 2 n - 1 - 2 n - h - 1 или ответ -«не существует».

  • 1.    Если n = 2 h , то генерируем бент-функцию f e P 2 ( n ) и возвращаем ее.

  • 2.    Генерируем бент-функцию g e P 2 (2 h ) и произвольный вектор z e G .

  • 3.    Генерируем базисы пространств E и E , в прямую сумму которых раскладывается G . Это n линейно независимых булевых векторов длины n , { e 1, ..., e 2 h } – базис E' , { e 2 h + 1,..., en } - базис E . Базисы получаем так: генерируем невырожденную матрицу А размерности n х n , ее первые 2h строчек - базис E , остальные – базис E .

  • 4.    Для всех x = ( x 1 ,..., x n ) e Z 2 n полагаем f (^ B x i e i ) = g ( x i ,..., x 2 h ) e<$ x i ( e i , z ).

  • i =1 i =2 h +1

Анализ работы генераторов частично бент-функций. Время работы генераторов примерно одинаково, поскольку они похожи по построению. В ге нераторе 2 f (exiei) = f (xA), т. е. генерация невыро-i =1

жденной матрицы используется в обоих генераторах частично бент-функций и занимает 50…60 % всего времени их работы.

В дальнейшем имеет смысл использовать генератор 2, поскольку он позволяет явно задавать пространство E и вектор z , с помощью определенного выбора которых можно попытаться улучшить КИ и КР, задать сбалансированность. Для этого используется следующая теорема.

Теорема 3 [5]. Пусть f – частично бент-функция, z – вектор из пункта ( ii ) теоремы 2, E = { x e G : A f ( x ) ^ 0}. Функция f является:

  • а )    сбалансированной о f | E * const;

  • б )    несбалансированной o f | E = const и w ( f ) = 2 n - 1 ± 2 n - h - 1 , где dim E = n - 2 h , 0 h < [ n / 2 J ;

  • в )    корреляционно-иммунной порядка k о смежный класс z e E 1 содержит только векторы веса больше k или нулевого;

  • г )    сбалансированной корреляционно-иммунной порядка к о класс z e E 1 содержит только векторы веса больше k ;

  • д )    удовлетворяет критерию распространения PC( к ) о E не содержит векторов веса w , 1 w к .

В этой теореме E 1 = { x e G : V e e E ( x , e ) = 0 }. Используя теорему 2, можно пытаться улучшать порядок КИ и КР частично бент-функций.

Улучшение порядка КИ и КР. О работе генератора 2 без улучшений можно судить по следующей таблице (табл. 1).

В генераторе 2 есть возможность напрямую задавать для частично бент-функции базовый вектор аффинной части z и пространство линейных структур E . Это означает, что можно попытаться улучшить порядок КИ и КР для генерируемой функции, так как из теоремы 2 известно, что порядок КИ определяется смежным классом z e E 1, а порядок КР - пространством E .

Начнем с критерия распространения. Выдаваемая функция удовлетворяет КР( k ) тогда и только тогда, когда все ненулевые векторы пространства E имеют вес больше k . Нужно сконструировать E таким образом, чтобы число k было как можно больше.

Если dim E = n - 2 h = 1, т. е. базис пространства E состоит из единственного вектора, то мы берем в качестве этого вектора вектор из всех единиц. Он обеспечивает максимально возможный порядок КР, равный 2 h . Например, улучшенный генератор 2 выдает в этом случае ( n = 15, h = 7) функцию с порядком КИ, равным единице, и порядком КР, равным 14.

Множество {1, 2, …, n } можно разбить на dim E непересекающихся множеств K i с числом элементов, превосходящим или равным |_ n /dim E J . С каждым множеством K i сопоставим вектор длины n , в котором единицы стоят только в позициях из K i . Очевидно, эти dim E векторов линейно независимы. Таким образом, всегда можно добиться порядка КР, равного [ n / dim E J- 1.

Пусть p – порядок КР. Начиная с p = 1 (или [ n / dim E J - 1, если это не нуль) и до p = 2 h пробуем строить пространство E , обеспечивающее КР( p ), с помощью описанного ниже алгоритма; если построить E удается – увеличиваем p , иначе выходим из цикла и E остается тем, что было построено для предыдущего p .

Алгоритм построения пространства E

Вход: n , dim E , p – требуемый порядок КР.

Выход: базис E или ответ – «не найден».

  • 1.    Если dim E = 1, то возвращаем базис E – вектор из всех единиц.

  • 2.    Берем в качестве e 1 случайный вектор. Если он не подошел, т. е. его вес ≤ p , то генерируем случайное число t от p + 1 до n и пусть e 1 – это вектор, у которого первые t позиций заполнены единицами. Полагаем M = {0, e 1 }, K = G \ M , i = 2. Здесь M - линейная оболочка построенных векторов базиса E , K – множество кандидатов на место e i .

  • 3.    Строим e i . Сначала пробуем на место e i случайный вектор. Если он подходит, идем на шаг 4, иначе вычеркиваем этот вектор из K . Перебираем векторы из K с начала или с конца до тех пор, пока не найдем подходящий вектор; неподходящие векторы вычеркиваем. Если нашли подходящий вектор (его вес больше p , и он не приводит к появлению в M ненулевых векторов веса ≤ p ), то идем на шаг 4, иначе ответ – «не найден».

  • 4.    M = M и { m ® e i : m e M },

  • 5.    Если базис E размерности dim E еще не построен, то увеличиваем i на единицу и идем на шаг 3, иначе возвращаем базис E .

K = K \ { m ® e i : m e M }.

Функция с n = 15, h = 5 генерируется с использованием алгоритма построения E примерно за три секунды. Для n = 21, h = 7 время работы этого алгоритма неизвестно; оно слишком велико. Ниже приводятся характеристики функций, построенных с применением этого алгоритма (табл. 2).

Как видим, порядок КР действительно улучшился. Функции, для которых он был меньше четырех, перестали выдаваться вообще.

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

Вычисление прямого дополнения E' пространства E

Вход: E , dim E .

Выход: базис E' .

  • 1 .    M = E , i = 1.

  • 2.    Если i n - dim E ,    то возвращаем

  • 3.    Берем в качестве e i произвольный вектор из G \ M .

  • 4.    Расширяем M : M = M и { m ® e i : m e M }, i = i + 1. Идем на шаг 2.

{ e l ,..., e n -dim E } - базис E' .

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

1 000 функций, выданных генератором 2: n = 15, h = 5; сбалансированных – 966

Таблица 1

не PC(1)

PC(1)

PC(2)

PC(3)

PC(4)

PC(5)

не КИ(1)

6

27 (3)

107 (8)

170 (6)

42

3

КИ(1)

45

213 (5)

253 (9)

60 (3)

КИ(2)

3

11

14

9

Примечание . Здесь и далее в таблицах: без скобок – число сбалансированных функций, в скобках – несбалансированных.

Таблица 2

1 000 функций, выданных генератором 2 с улучшенным КР: n = 15, h = 5; сбалансированных – 966

не КР(1)

КР(1)

КР(2)

КР(3)

КР(4)

КР(5)

КР(6)

не КИ(1)

338 (2)

109

КИ(1)

4 (1)

391 (21)

102

КИ(2)

16 (2)

6

КИ(3)

(8)

Из базисов E и E составляется матрица A (см. генератор 2).

Теперь попробуем улучшить порядок КИ. На пространство E повлиять не можем, так как уже построили E ; E вычисляем как множество векторов из G , каждый из которых ортогонален всем векторам базиса E . Осталось перебрать все значения z и выбрать среди них то, которое обеспечивает самый высокий порядок КИ. Пишем вспомогательную функцию, которая по z и E определяет, какой порядок КИ обеспечивает смежный класс z E . Для этого проверяем, принадлежат ли z E векторы веса 1, 2 и т. д.

Можно перебирать все значения z из G , однако это необязательно, поскольку z 1 E = z 2 E , если и только если z 2 z 1 E . Очевидно, достаточно перебрать все значения z из пространства E 1 – прямого дополнения E ; dim E 1 = n – dim E = dim E = n – 2 h . Как находить прямое дополнение, нам известно. Базис E находится примерно так же, как базис G в генераторе невырожденной матрицы. Для тех значений n и h , которые мы использовали ранее, перебор z не занимает существенного времени – функция генерируется примерно за то же время. О влиянии улучшения z на характеристики генерируемой функции можно судить по приведенным ниже таблицам (табл. 3, 4). Большое число несбалансированных функций в них объясняется тем, что перебор значений z начинается с нуля, а остальные значения z улучшения КИ не дают.

Также была сделана попытка одновременного улучшения КИ и КР.

Выясним, как можно улучшить порядок КИ функции с помощью аффинной добавки.

Влияние аффинной добавки на значения преобразования Уолша–Адамара такое:     если

f ( x ) = f ( x ) ( x , t ) t 0, где t G , t 0 {0, 1} , то W f ( 5 ) = W f ( 5 Ф t ), т. е. аффинная добавка приводит к сдвигу значений преобразования Уолша–Адамара. Пусть f является частично бент-функцией, тогда

W f ( 5 ) * 0 о W f ( 5 Ф t ) * 0 о

⇔s⊕t∈ z⊕E⊥ ⇔s ∈z⊕t⊕E⊥,

  • т. е. аффинная добавка к частично бент-функции приводит лишь к изменению z . Улучшить КИ частично бент-функции с помощью аффинной добавки – это значит перебрать все значения вектора z . Как это можно сделать, мы уже знаем.

Предложенный ниже алгоритм может применяться для улучшения КИ любой булевой функции. На практике он не исследовался.

Алгоритм улучшения порядка КИ функции с помощью аффинной добавки

Вход: n , f P 2 ( n ) .

Выход: t G или ответ – «нельзя улучшить».

  • 1.    Находим вес функции f . Если f является константой или ее вес нечетный, то ответ – «нельзя улучшить».

  • 2.    Находим все значения преобразования Уолша– Адамара функции f , вычисляем множество E = { s G : Wf ( s ) 0} и k – порядок КИ функции f .

  • 3.    Если функция несбалансированная, то вычисляем максимальное m такое, что для всех s G выполняется 2 m + 1 | Wf ( s ) , иначе вычисляем максимальное m такое, что для всех s G выполняется 2 m + 2 | Wf ( s ) . По теореме о необходимом условии КИ [1] мы не сможем получить порядок КИ выше m . Если k = m , то ответ – «нельзя улучшить».

  • 4 .    i = 1. T = G . T – это множество возможных значений вектора t .

  • 5.    Нам известно, что для функции f ( x ) = f ( x ) ( x , t ) t 0, t 0 {0,1} множество t Ф E = { 5 е G : W f ( 5 ) * 0}. Для каждого t е T и каждого j { j G : w ( j ) = i } проверяем: если t j E , то T = T \ t . В итоге в T остаются только те значения t , которые обеспечивают КИ( i ) для f . Если T не пусто, то берем любое t T , в противном случае поступаем так: если i = 1 или i - 1 k , то ответ – «нельзя улучшить», иначе возвращаем t .

  • 6.    Если i = m , то возвращаем t . i = i +1. Идем на шаг 4.

    Таблица 3

    1 000 функций, выданных генератором 2 с улучшенным КИ: n = 15, h = 5; сбалансированных – 328

    не КР(1)

    КР(1)

    КР(2)

    КР(3)

    КР(4)

    КР(5)

    КР(6)

    не КИ(1)

    КИ(1)

    (142)

    48 (291)

    44 (190)

    КИ(2)

    189 (49)

    47


    Таблица 4

    1 000 функций, выданных генератором 2 с улучшенным КИ и КР: n = 15, h = 5; сбалансированных – 277

    не КР(1)

    КР(1)

    КР(2)

    КР(3)

    КР(4)

    КР(5)

    КР(6)

    не КИ(1)

    КИ(1)

    (1)

    8 (435)

    КИ(2)

    1

    268 (51)

    КИ(3)

    (236)


Если этот алгоритм выдает t , то функция f будет иметь более высокий порядок КИ, нежели f . Известно, что аффинная добавка никак не влияет на порядок КР.

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

Автор выражает благодарность И. А. Панкратовой и К. В. Сафонову за постоянное внимание к работе и ценные замечания.

Статья научная