УДК 519.7 + 512.624
А. А. Бурцев1, С. Б. Гашков2
1 Московский физико-технический институт (государственный университет)
2Московский государственный университет им. М. В. Ломоносова
О схемах для арифметики в конечных полях
В работе доказывается, что для любого е > 0 при любом т, п = ms и s ^ se можно выбрать в поле GF(2") базис, для которого схемная сложность умножения меньше п1+е/2, а сложность инвертирования меньше п1+е. При п = 2 • 3fc в некотором базисе получены оценки сложности умножения n(log3 n)(log2 log3 n)/2+°(1)j и п0 порядку такие же оценки получены для инвертирования.
Ключевые слова: булевы схемы, сложность схем, арифметика, конечные поля.
1. Введение
Известно (см. [1], [2]), что при использовании стандартных базисов в полях GF(2”) сложность булевой схемы для умножения, построенной из двухвходовых элементов, равна 0(п log п log log п). Для инвертирования (т.е. вычисления мультипликативного обратного в данном поле) известен быстрый алгоритм Евклида с оценкой сложности 0(п log2 п log log п) (см. [1], [3]). Однако мультипликативная константа в этой оценке велика (несколько сотен), и при реальных значениях п стандартный алгоритм Евклида работает быстрее. Кроме того, этот алгоритм затруднительно применить при построении булевой схемы для инвертирования. Методом [4] можно построить такую схему сложности: I(п) = 0(п(ш+1')/2 log2 п), где ш — экспонента матричного умножения. Однако величина мультипликативной константы здесь с трудом поддается оценке, также трудно оценить глубину этой схемы. Используя [5], можно построить схему для инвертирования глубины 0(log2 п) и сложности
0(niog2 ^/I4(log2 n)log2 8/7), где мультипликативные константы сравнительно невелики, но и эта схема при реальных значениях п представляется неэффективной.
При использовании в поле GF (2”) нормального базиса можно построить схему для умножения сложности 0(п2/ log п) (см. [6]). Если для инвертирования применить метод [7] (основанный на методе Шольца—Брауэра для вычисления 2п — 1 аддитивными цепочками [8]), то можно построить схему сложности 0(Mn(п) logп) = 0(п2) с небольшой мультипликативной константой в оценке, где Мn (п) — сложность умножения в данном базисе. Для некоторых специальных нормальных базисов (существующих не при всех п) можно построить более эффективные схемы для умножения, и, как следствие, для инвертирования. В [6] показано, что для оптимальных нормальных базисов первого типа можно построить мультиплер сложности М(п) + О(п), где М(п) — сложность умножения двоичных многочленов степени п — 1. Для оптимальных нормальных базисов второго типа в [6] указана оценка 3М(п)) + 3^ log2 п + О(п). В [6] также показано, что если п = тк, т,к ^ пс, С ^ 1/2, (т,к) = 1, то для некоторого нормального базиса сложность умножения равна 0(п(т + к)/log п) = 0(п2-С/ log п), откуда следует, что если п — достаточно гладкое число, то для некоторого нормального базиса сложность умножения равна 0(п2-С) при С > 0, характеризующем гладкость числа п. В [4] доказано, что для гауссовых нормальных базисов типа к в поле GF(2”) сложность умножения равна 0(М(пк)), а в [9] подобный результат получен в более общем случае.
2. Схемы в поле GF(2n) при n = ms
К упомянутым результатам можно добавить также следующие.
Теорема 1. Для любого е > 0 при любом т п = т'в и 8 ^ 8е можно указать в поле СР(2™) базис (не стандартный и не нормальный), в котором можно построить схему умножения сложности М(тв) < п1+е/2 и схему инвертирования сложности
1(тя) < п1+е.
Доказательство. Пусть к < в — параметр, значение которого укажем позднее. Выберем наименьшее г такое, что 2тГ ^ 2тк — 1, и г = 8 шоё к. Тогда г = О(к). Поле
СР ^) = ср ^дт°-^ = ср ^дтк^ ,д = 2ш-,
представим в виде башни расширений
СР (д) С СР [дтк) С СР (^[дтк^ = СР [(1т2к) С ... С СР (дтЫ) .
Для каждого этажа башни
СР(дг) = СР (дт*) С СР ^(дт* ^ = СР (>(т)к) = СР(дг+1)
выберем стандартный базис {1,а,... ,атк-1}, определяемый неприводимым над полем
СР (дг) многочленом рг (х) степени тк таким образом, чтобы элемент а порождал нор-
к 1
мальный базис {а, а® ..., а^т }, где Q = дг. Тогда произвольный элемент поля СР(дг+1) можно представить в виде тк-мерного вектора с компонентам и из поля СР (дг) и в виде тк(г+1)-мерного вектора с компонентами из поля СР(д). Умножение в поле СР(дг+1) можно свести к умножению по модулю многочлена рг двух многочленов степени £ = тк — 1 над полем СР(дг). Известно [1], что умножение в поле СР(дг+1) сводится к трем умноже-
С Р( г)
, С Р( г)
/(аг), д(аг) на произвольных 2£ + 1 элементах его подполя СР(д), выполнить 2£ + 1 умно-С Р( г)
чениям Л,(аг) = /(аг) д(аг) коэффициенты произведения к(х) = /(х)д(х). Для выполнения
О( 2)
С Р( ) С Р( г).
умножения в поле СР(дг+г) оценивается как
М(СР(дг+г)) < 3(2тк — 1)М(СР(дг)) + О(т2к)тгк(log2 д)Хо&23,
так как сложение в поле СР(дг) выполняется со сложностью ^2 дг = тгк ^2 д, а сложность умножения на элементы подполя СР(д) равна М(СР(д))тгк = О(log2 д)Хо&2 3тгк, потому, что это умножение сводится к тгк умножениям в поле СР(д). Если обозначить М(СР(дг)) через М(г), а 3(2тк — 1) через а, то полученное рекуррентное неравенство переписывается в виде М(г + 1) ^ аМ(г) + Ьт(г+1Л1к, где Ь = О(а)(тктг 1о®23) = О(а)т°(к), М(0) = М(СР(д)) = О(^2 д)ъ&2 3. Применяя индукцию, имеем
М(I) ^ а1М(0) + Ь (а1-1тк + а1-2т2к + ... + т1к) ,
следовательно:
М(0 < а‘М(0) + аЧ/ — (ткУ1 < а‘М(0) + а‘Ьк , «
< а1М(0) + 3а1 Ь/2 = О(а1+1)т°(к) = О(а)т°(к)211оё2 3(2тк-1).
к
Учитывая, что ® = дт , имеем I = (^2 ®)/ log2 тк, log2 ® = п,
, 1°§2 1°ёд 1°ё2 3(2тк-1)
М(СР(2™)) = М(СР(®)) = О(тг 1о§2 3))2г 1о§23(2т -1) = т°(к)2 ^2™к
= т°(k\logq ф)1к 3(2тк-1) = т°(к)(^2 ®)1о^к 3(2тк-1) = т°(к)п1о^к 3(2тк-1).
Поскольку logтк 3(2 тк — 1) ^ 1 при тк —> те, то для любого е > 0 при любом т, п = тя и 8 ^ 8е, имеем М (СР(2™)) = М (СР(2тВ)) = п1+е/2. Умножение на каждом этаже башни можно выполнять и в нормальном базисе, если выполнить переход к стандартному базису, произвести умножение в нем и вернуться опять в нормальный базис. Грубая оценка сложности переходов между базисами равна
т2кМ (СР (дг)) + (т2к — тк )тгк+г,
ведь для выполнения как прямого, так и обратного преобразования координат требуется не т2к т2к — тк С Р( г),
тгк+г. С помощью циклических сдвигов вычислим в нормальном базисе систему степеней
к
х^,х^2 ,...,х^т 1 ^ = дг.
= тк — 1,
ао = 1,а1 = 2,а2,... ,аь = t длины Ь = Ь(£), т.е. такую последовательность, что каждый ее член а™ при п > 0 равен ап-1 + ак, к < п (если к = п — 1, то операция вычисления ап называется шагом удвоения, а если к < п — 1 — линейным, шагом). Построим линейную аддитивную цепочку, содержащую подпоследовательность
Q“1 — 1 Q“2 — 1 Qt — 1
Q — 1 ,~Я—1~ ,...,~Я—1 ,
между соседними членами которой производятся несколько последовательных шагов удвоения и один линейный шаг, пользуясь формулами
Qai — 1 Qai +ан — 1 Qai — 1 Qah — 1
--------——-----------—— С/ ----------+---------.
Q — 1 Q — 1 Q Q — 1 + Q — 1
Так как возведение в степень Цп в нормальном базисе делается бесплатно, а х(Яа°-1)/((5-1) = х, ТО ДЛЯ вычисления К (х) = х(®{+1-®)/(®-1) требуется только
Ь = Ь( тк — 1)
N(х) = хК (х). Поэтому сложность совместного вычисления К (х), N (х) оценивается как
ЬМ(СР(дг+1)) < Ь (3(т2к + 2тк — 1)М(СР(дг)) + О(т2к)тгк(тг)ь^ 3) .
Используя формулу х-1 = К(х)/N(х), получаем рекуррентную оценку сложности инвертирования:
/(^2 $+1) = I (т(г+1)к+г) < 1 (тгк+г) + ткМ(СР(дг)) +
+ Ь(тк — 1) (^3(т2к + 2тк — 1)М(СР(дг)) + О(т2к)тгк(тг)1og2 3^ .
Очевидно, что Ь(£) ^ ^2^) + ^(Ь) — 1 ^ 2^2^ ^ 2к log2 т, где Л2(£) — длина двоичной , 2( )
Из полученных выше оценок по индукции с помощью неравенства аМ (п) ^ М (ап) выводим оценку
1(тя) = I (т1к+г^ = Д^2 дг) ^ 1(тг) + О(кт2к ^2 т)М(log2 дг-1) =
= 1(тТ) + О(ктк log2 т)М(тя) = О(ктк log2 т)М(тя).
Теорема доказана.
Укажем конкретный пример применения данного метода. Пусть т = 2, п = тя. Выберем к = 8, тогда logтк 3(2тк — 1) = ^256 1533 < 1.33 Получаем как следствие в некотором базисе поля СР(22 ) оценку сложности умножения О(2п '33) и оценку слож-
( п) = О( М( п)).
(полученных для другого базиса).
3. Схемы в поле ОЕ(2”) при п = 2 ■ 3к
При т = 3 можно уточнить доказанную теорему следующим образом.
Теорема 2. При п = 2 ■ 3к в поле СР(2™) можно указать некоторый (не стандартный и не нормальный) базис и построить в нем, схемы умножения и инвертирования сложности:
М(п) = п(к^3 п)(1о&1о&3га)/2+°(1), /(п) = 0(М(п)).
Доказательство. Положим ^ = 2“* ,аг = 2 ■ 3Ьг, Ьг = 2г и рассмотрим башню полей
СР(до) сСР(<?1) с ... с СР(дк).
Так как ^ — 1 = 2“* — 1 кратно 3Ьг+1 = 3п^ то в поле СР(^) найдется элемент порядка 3Ьг+1 = 3п^ и, значит, определено дискретное преобразование Фурье порядка 3Ьг+1 = 3п Как следует из [И], многочлены степени меньше щ = 3Ьг = а^/2 над полем СР(^) могут быть перемножены С ПОМОЩЬЮ 24п^ ^3 п +0(п^) умножений И 68п logз п + 0(п^) сложений в этом поле. Если обозначить сложность умножения в поле СР((^) через М(СР(Цг)), то сложность умножения многочленов степени меньше п над пол ем СР (дг) будет оцениваться как
(24т ^з п + 0(п))М(СР(дг)) + (68п logз п + 0(п))щ.
Обозначим далее эту оценку через М^. Выберем в этом поле примитивный элемент сц, тогда двучлен Д = хпг — а будет неприводимым согласно теореме 3.75 [12], так как т = 3Ьг делит дг — 1, а значит, и <^+1 — 1 = 2“г+1 — 1. Выбирая в расширении СР((^+1) поля СР(дг) стандартный базис, соответствующий двучлену /г, и замечая, что умножение в этом базисе сводится к умножению многочленов степени меньше п над пол ем СР (дг) и приведению результата по модулю /г (которое выполняется школьным алгоритмом деления с помощью п операций умножения и т операций сложения в поле СР((дг))), имеем
М(СР(дг+1)) ^Мг + пгМ(СР(дг)) + ат <
^ (24т log3 т + 0(т))М(СР(дг)) + (б8п log3 щ + 0(т))т + а»+1 ^
^ (12а* logз аг + 0(аг))М(СР(дг)) + (17а2 logз аг + 0(а2)) + аг+1 ^
^ (12а* logз аг + 0(аг))М(СР(%)) +(17а2 logз а» + 0(а2)) ^
^ (12аД + 0((ц))М(СР(%)).
Отсюда по индукции следует, что
П—1 П—1
log2 М(СР(дп)) ^ ^ ^2 12аД + 0(1) = ^((к^ 3)2г + г log2 24) + 0(1) ^
г=1 г=1
^ (log2 3)2™ + п2/2 + (2^ + log2 3)п + 0(1),
значит,
М(СР(дп)) < 0 ^32"+га2(га2+5га)/2) , дп = 22^2".
Обозначая для краткости ап = 2 ■ 32" через М, имеем
М(СР(2м)) < N(^3 М)га/2+°(1) = N(^3 М)(1о§21о§з^)/2+о(1).
Получим теперь оценку для сложности инвертирования. В расширении СР(дг+1) поля СР(дг) выполняем инвертирование по формуле
1 12 пг — 1
х—1 = К(х)М(х) , К(х) = хЯгхЯг .. .хЯг ,М(х) = хК(х).
Так как
2 пг 2 Пг —1
N(х)дг = х^х^ .. .хЧг = х9гх?2 .. .хЧг х = N(х),
то N(х) € СР(дг), поэтому для инвертирования нужно вычислить К(х),М(х), потом выполнить инвертирование в подполе СР(дг) и п^ раз выполнить умножение в поле СР(дг).
п*/3 2п*/3
Для вычисления N(х), К (х) сначала найдем у = ххяг хяг , а потом
Пг / 3— 1 Пг / 3— 1 Пг / 3 2пг/3
N (х) = уудг... уЯг , К(х) = удг... уЯг хЯг хЯг .
Поскольку
пі/З пі/З 2п7-/3 п? пі/З 2пі/3
? А 1 = Хі і Хі 1 Хі і = ХХі тді = V
то у Є СР(д^і/3). Значит, для вычисления у можно сделать 2 умножения в поле СР (<7і+і)
^ Пі /3 2пі / З
и 2 операции возведения в стеиени ^ , ді в том же иоле, потом вычислить
пг/3—1
Ж (х) = ууЯі ... уЯі
и для вычисления ^ (х) сделать одно умножение в поле СР (<7і+і) на элемент подполя СР(д™і/3). Учитывая, что произвольный элемент поля СР((7і+і) можно представить в виде
Хо +Хі7і + Х272,
где = Xj + х37гЗ+^' + хЗ(гаі/З-1)+^аЗ(гаі/З-1) Є СР(д^і/3)^ = 0,1, 2, то умножение в поле СР(<7і+і) на элемент подполя СР(д™г/З) сводится к трем умножениям в этом подполе. Поле СР(д™г/З) является расширением степени т/3 = 3Ьі-1 подполя СР(дг) и в нем можно выбрать базис {1,р,..., Р™і/3-1}, где 0™г/3 = щ. Умножение в этом базисе совпадает с умножением многочленов степени Пг/3 ПО модулю неприводимого над полем СР(дг) многочлена хПі/З+(іі. В расширении СР(д^ С СР(%+1) ранее был выбран базис {1, 7і, . . . , 7Гі-1}, где 7™і = і. Положим Рі = 73. Тогда произвольный элемент подполя СР(д™і/3) имеет относительно базиса {1, Рг,..., рп/г//' 1} координаты, которые совпадают с т/3 координатами этого элемента относительно базиса {1,аг,..., а”і-1} (а остальные его координаты в указанном базисе равны нулю). Поэтому сложность умножения элементов данного подполя оценивается неравенством
М(СР(д™і/3)) < М(сч+і/3) + (т/3)М(СР(дг)) + аг+і/3 <
^ (8т 1о§з Пі + 0(т))М(СР(дг)) + ((68/3)т logз т + 0(т))т + ат/3 ^
^ (4 афі + 0(аі))М(СР(д^).
Оценим сложность возведения в степени д™г/З, д2Пг/З в поле СР(ді+і). Произвольный элемент х толя СР(ді+і) можно представить в виде
Хо + Хі 7г + Х272,
где Х^ Є СР(дІ%/3),І = 0,1, 2, то
. /з пг/3 пг/3 пг/3 Пг/З Пг/3 Пг/3 Пг/3
х*г =Х00г +ХІг 7дгг +Х*2г 7^ =Хо +Хі 7Їг + Х272?і .
Так как д™г/3 — 1 делится на ^ — 1, а значит, кратно т, то
пг
7Iі = 7г(и)(Яі гІ Г)/пі = аі7і, 7ІЧ% 1 = 7г2(«г)2(^1 1)/9 = Ьі7і, сі, Ы Є СР(ді),
пг/3 дп1/3 2-пПг/3
поэтому хЯг = Хо + Х^г +Х2^1 г = Хо + Х1аг')г +Х2Ьг^г, значит, возведение в степень 0™г/3 В ПОЛе СР(<7г+1) сводится к двум умножениям в подполе СР(0^г/3) па элементы подполя СР((^). Следовательно, его сложность оцепивается как (2п^/3)М(СР(дг)). Точно так же оценивается сложность возведения в степень д2Пг/3. Поэтому суммарная сложность всех выполненных операций равна
Ьг = 2М(СР(&+!)) + 3М(СР(д?/3)) + (4пг/3)М(СР(дг)) <
^ (36 афг + 0((ц))М(СР(%)).
Для вычисления
пг / 3-1
УУдг ... УЯг ,
где у € СР(д™г/3), применяем тот же прием, вычисляя сначала
пг/9 2пг/9
о- а-
г = у уЧг уЧг .
п*/3 пг/9 П'/9
Так как удг = у, то = г, значит, г € СР(). Для вычисления г нужно выпол-
т~\{ Пг/3\ пг/9 2пг / 9
нить два умножения в поле СР () и возведение в степени 1 , qi в том же поле.
Аналогично предыдущим рассуждениям, оцениваем их сложность как
2М(СР(д^/3)) + (4пг/9)М(СР(дг)) < (24 аг—1 Ьг + 0(аг—1))М(СР(дг)).
Поскольку
пг / 3— 1 пг/9 — 1
уудг... уЯг = г... гЯг ,
то остается вычислить
пг / 9 -1
г2^ ...г9* ,г € СР(д™г/9).
Применяя тот же прием, сводим это вычисление со сложностью
2М(СР(д^/9)) + (4пг/27)М(СР(дг)) < (24 аг—2Ьг + 0(аг—2))М(СР(дг))
к вычислению
г/27—1
пг/27 — 1
^ ^ € СР(д™г/27)
и т.д. Так как п = 3Ьг, этот процесс закончится через Ьг шагов. На каждом шаге требуемая сложность уменьшается асимптотически в три раза, поэтому сложность вычисления N(х) оценивается как
^243а»—1 Ьг + 0(а*)^ М(СР(<&)),
2
значит, сложность вычисления N(х), К (х) оценивается как
(44 аЫ + 0(а ))М (СР (дг)).
Отсюда следует рекуррентная оценка сложности инвертирования:
1(аг+1) ^ 1(аг) +щМ(СР(дг)) + (44аД + 0(а))М(СР(дг)) ^ ^ 1( а) + (44 аЫ + 0(а))М (СР (дг)).
Из нее по индукции получаем, что
П— 1
1(ап) ^^2(44 агЫ + 0(а»))М(СР(%)) + 1(ао)
^П_
І=1
= (44 ап— 1 Ъп— 1 + 0(ап—1))М (СР (^-1)).
Поскольку М(СР(<?г+1)) ^ (12аЛ + 0(аг))М(СР(д^)), то предполагая, что
М (СР (^+1)) = (12агЪг + 0(аг))М (СР (дг)),
получаем асимптотическую оценку:
1(ап) ^11 + о(1^ М(СР(дп)).
Замечая, что М(СР(дп)) = 0 ^32"+п2(п2+5п')/2^ , во всех случаях имеем
1(ап) = (44^-1 Ьп-1 + 0(ап-1))М(СР(^-1)) = 0 (32п+га2(™2+5га)/2) .
Поэтому при N = ап справедливо равенство /(N) = 0(М(СР(2м))). Такие же оценки можно получить и для любого N = 2 ■ 3”. Для этого выберем к так, чтобы 2к-1 ^ п < 2к и определим последовательность ак = N,(^1 = 2 ■ 3^1о®3(“г/2))/2^, положим д^ = 2аг и рассмотрим башню полей СР(д0) с СР(д1) с ... С СР(дк). Теорем,а доказана.
Для практического построения схем для умножения и инвертирования в полях СР(2п)
п
чисел, построить эти схемы для полей, размерности которых равны указанным множителям, сводя их построение к построению схем для полей простой размерности, а потом применить метод построения схем для полей составной размерности при условии взаимной простоты сомножителей. Для инвертирования в полях простой размерности применяется метод [7]. Вместо простых чисел, при возможности, можно применять размерности, для которых существуют оптимальные нормальные базисы, или гауссовы базисы малой сложности (см., например, [9]).
4. Вывод
Для любого £ > 0 при любом т, п = тя и 8 ^ 8е можно выбрать в поле СР(2п) базис, для которого схемная сложность умножения меньше п1+е/2, а сложность инвертирования меньше п^6. При п = 2 ■ 3к для некоторого базиса можно получить для умножения оценки СЛОЖНОСТИ п(^з п)(1°®2 1о®3 га)/2+°(1) и ПО порядку такие же оценки можно получить для инвертирования.
Литература
1. Gathen J. von zur, Gerhard J. Modern computer algebra. — Cambridge University Press, 1999.
2. Schonhage A. Schnelle Multiplication von Polvnomen iiber Korpern der Charakteristik 2 // Acta Informatica. - 1977. - V. 7. - P. 395-398.
3. Schonhage A. Schnelle berechnung von kettenbruchentwicklungen // Acta Informatica 1. — 1971. - P. 139-144.
4. Gao S., Gathen J. von zur, Panario D., Shoup V. Algorithm for exponentiation in finite field // J. of Symbolic Computation. — 2000. — V. 29. — P. 879-889.
5. Штрассен Ф. Алгоритм Гаусса не оптимален // Кибернетический сборник. — Вып. 7. - М.: Мир, 1971.
6. Болотов А.А., Гашков С.Б. О быстром умножении в нормальных базисах конечных полей // Дискретная математика. — 2001. — Т. 13, N8 3. — С. 3-31.
7. Itoh Т., Tsujii S. A fast algorithm for computing multiplicative inverses in GF(2™) using normal bases // Inform. And Comp. — 1988. — V. 78. — P. 171-177.
8. Кнут Д. Искусство программирования. Т. 2. — 2-е изд. — М.: Вильямс, 2000.
9. Gathen J. von zur, Nocker M. Fast arithmetic with general Gauss periods // Theor. Comp. Sci. - 2004. - V. 315. - P. 419-452.
10. Paar C., Fan J.L. Efficient inversion in tower fields of characteristic two. — IS IT, Ulm, Germany, 1997.
11. Гагиков С.Б. Замечания о быстром умножении многочленов, преобразовании Фурье и Хартли // Дискретна,я математика. — 2000. — Т. 12, N8 3. — С. 124-153.
12. Лидл Р., Нидеррейтер X. Конечные поля. — М.: Мир, 1988.
Поступила в редакцию 19.02.2012.