ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2023 Прикладная теория кодирования № 62
ПРИКЛАДНАЯ ТЕОРИЯ КОДИРОВАНИЯ
УДК 519.725 DOI 10.17223/20710410/62/7
АЛГЕБРОГЕОМЕТРИЧЕСКИЕ КОДЫ И ИХ ДЕКОДИРОВАНИЕ НА ОСНОВЕ ПАР, ИСПРАВЛЯЮЩИХ ОШИБКИ1
Е. С. Малыгина*, А. А, Кунинец**, В, Л, Раточка**, А. Г. Дупленко**, Д. Я. Нейман**
*МИЭМ НИУ ВШЭ, г. Москва, Россия
**
E-mail: [email protected], [email protected], [email protected], [email protected], [email protected]
Рассматриваются теоретические основы алгебраических кривых и их функциональных полей, необходимые для построения алгеброгеометрических (АГ) кодов, а также пар, исправляющих ошибки, с целью их дальнейшего применения для декодирования кодов. Приведены теория, необходимая для обоснования корректности работы алгоритма декодирования АГ-кодов на основе пар, исправляющих ошибки, и сам алгоритм декодирования. Рассмотрены примеры построения АГ-кодов, ассоциированных с эллиптической кривой, эрмитовой кривой и квартикой Клейна, и явно заданы пары, исправляющие ошибки, для построенных кодов.
Ключевые слова: алгеброгеометрический код, функциональное поле, дивизор, исправляющие ошибки пары, декодирование алгеброгеометрического кода, эллиптическая кривая, эрмитова кривая, квартика Клейна.
ALGEBRAIC-GEOMETRY CODES AND DECODING BY ERROR-CORRECTING PAIRS
E.S. Malvgina*, A. A. Kuninets**, V. L. Ratoehka**, A. G. Duplenko**, D.Y. Neiman**
*
**
We consider the basic theory of algebraic curves and their function fields necessary for constructing algebraic geometry codes and a pair of codes forming an error-correction pair which is used in a precomputation step of the decoding algorithm for the algebraic geometry codes. Also, we consider the decoding algorithm and give the necessary theory to prove its correctness. As a result, we consider elliptic curves, Hermitian curves and Klein quartics and construct the algebraic geometry codes associated with these families of curves, and also explicitly define the error-correcting pairs for the resulting codes.
Keywords: algebraic geometry code, function field, divisor, error-correcting pair, decoding of algebraic geometry code, elliptic curve, Hermitian curve, Klein quartic.
1 Обзор подготовлен в рамках Программы фундаментальных исследований НИУ ВШЭ; работа второго автора поддержана грантом Российского научного фонда №22-41-0441.
Введение
В начале 70-х годов XX века российский математик В, Д, Гоииа установил связь между алгебраическими кривыми над конечными полями и кодами, исправляющими ошибки, предложив построить код, используя либо рациональные функции, либо дифференциальные формы на кривых [1]. Считалось, что построенный код обладал хорошими характеристиками, если отношение числа рациональных точек кривой к её роду достаточно велико. Новая связь позволила глубже изучить асимптотику кодов. Так, в то время для анализа параметров [п, к,<]-кода С, где п —длина, к —размерность, 1 — минимальное расстояние, наилучшей нижней границей являлась граница Варшамова — Гилберта
Я ^ 1 — Н(5),
где Я = к/п — относительная скорость; 5 = 1/п — асимптотическое относительное минимальное расстояние кода С; Н(ж) = — (хх + (1 — х) (1 — х)) —функция энтропии при условии, что код С определён над конечным полем ¥д.
Вскоре после результатов Гоппы в 1982 г. М, Цфасман, С, Влэдуц и Т. Цинк сопоставили последовательности кривых с последовательностями асимптотически хороших кодов, рассматривая модулярные кривые и кривые Шимуры [2]. Они доказали существование последовательностей кодов над конечным полем ¥д, где q = р2 или д = р4 для простого р, параметры которых удовлетворяли границе
Я>1-5- 1
VQ -1
Для д ^ 49 граница Цфасмана — Влэдуца — Цинка лучше, чем граница Варшамова — Гилберта, поскольку гарантируемое ею значение относительной скорости больше. Независимо Я. Ихара доказал аналогичный результат [3] для любого конечного поля ¥д, где д —квадрат простого числа, а именно:
R ^ 1 - 5 - A(q)
-1
Здесь A(q) = lim sup maxl<C,)1Fq= ^q — 1; |C(Fq)| — число Fg-рациональных точек алгебраической кривой C; g(C) — её род.
Полученный Цфасманом, Влэдуцем и Цинком результат стал основополагающим для интенсивного исследования как кривых с большим числом точек, так и ассоциированных с ними АГ-кодов. Так, например, А. Гарсия и X. Штихтенот получили оптимальные последовательности кривых, для которых отношение числа точек к роду достигает границы Дринфельда — Влэдуца [4]. Ещё одно направление исследований АГ-кодов касается разработки полиномиальных алгоритмов декодирования, исправляющих до половины конструктивного расстояния и даже более ошибок.
Отметим, что многие свойства АГ-коды унаследовали из свойств обобщённых кодов Рида — Соломона, которые, в свою очередь, можно рассматривать как АГ-коды на проективной прямой. Однако ещё одной мотивацией исследовать коды, ассоциированные с кривыми больших родов, стал следующий факт: длина кода Рида — Соломона, определённого над заданным конечным полем Fq, те превышает q + 1, в то время как можно построить АГ-код произвольной длины над заданным фиксированным полем Fq. Кроме того, к интересным свойствам АГ-кодов, которые делают их пригодными для очень широкого спектра приложений, можно отнести следующие. Во-первых, АГ-коды
можно построить явно, во-вторых, для АГ-кодов существуют эффективные алгоритмы декодирования, в-третьих, для большинства семейств АГ-кодов минимальное расстояние находится достаточно близко к своей верхней границе — границе Синглтона, в-четвёртых, дуальный к Л Г-коду код также является АГ-кодом, в-пятых, квадрат АГ-кода содержится в исходном АГ-коде, а зачастую совпадает с ним, АГ-коды находят своё применение в таких прикладных областях, как криптография с открытым ключом, теория алгебраической сложности, разделение секрета, а в последнее время и в постквантовой криптографии.
Целью настоящего обзора является представление базовой теории функциональных полей, позволяющей описать как теоретическое, так и практическое построение АГ-кодов, а также обзор алгоритма декодирования на основе пар, исправляющих ошибки. Рассмотрены три семейства кривых — эллиптические и эрмитовы кривые, а также квартика Клейна, для которых построены АГ-коды, Для самих кодов построены пары, исправляющие ошибки, необходимые для входных параметров алгоритма декодирования,
1. Предварительные сведения из теории алгебраических кривых
Будем считать, что ¥д — конечное поле, содержащее д элементев; Ап — аффинное пространство над Рд размерности п.
Определение 1. п-Мерное проективное пространство над конечным полем Рд, которое будем обозначать Рп(Рд) или крат ко Рп, состоит из классов эквивалентности (п + 1)-наборов, обозначаемых Р = (х : ... : хп+1), где х е Рд, При этом отношение эквивалентности задано следующим образом:
(х1 : ... : хп+1) ~ (у1 : ... : уп+1) ^ х = Ау^ для г = 1,... , п + 1 и некоторого А е Р*.
п
Такой класс эквивалентности Р называется точкой проективного пространства Р а (п + 1)-набор, определяющий точку Р, называется её однородными координатами.
Отметим, что существует естественное вложение Ап м Р™, такое, что (х1,..., хп) м м (х1 : ... : хп : 1) Точки из Р™, для которых хп+1 = 0, называются бесконечно удалёнными точками.
Определение 2. Многочлен f е Рд[Х1,..., Хп+1 ] называется однородным, многочленом степени если для любого н абора (х1,..., хп+1) е Рп+1 и любо го А е Р* имеет место соотношение
f (Ах1,..., Ахп+1) = А^ (х1,... ,Хп+1).
Если многочлен является однородным, то его множество нулей (корней) определено корректно.
Определение 3. Пусть 5 С Рд[Х1,..., Хп+1] — множество однородных многочленов, Множество нулей многочленов, ассоциированных с Б, обозначим как
2(Б) = {Р е Рп : f (Р) = 0 доя всех f е Б}.
Подмножество У С Рп назовём проективным, алгебраическим множеством, если существует множество Б С Рд [Х1,..., Хп+1] однородных многочленов, такое, что У = 2 (Б).
Идеалом алгебраического множества У называется идеал I (У), порождённый множеством однородных многочленов f е Рд [Х1,..., Хп+1] так, что f (Р) = 0 для РУ
Определение 4. Проективным многообразием будем называть неприводимое замкнутое (в смысле топологии Зариеекого [5]) подмножество в Р",
Определение 5. Пусть У — алгебраическое множество. Определим координатное кольцо для У как фактор-кольцо ¥д[У] = ¥д[Хь ... , Хп+1]//(У).
Рассмотрим однородные многочлены /, д е ¥д [X,..., Хп+1 ] одинаковой степени, причём д е I(У), и будем считать, что У —некоторое многообразие. Дробь //д е ¥д[Х1,..., Хп+1] называется рациональной функцией на, У. Элементы //д и /'/д' определяют одну и ту же рациональную функцию, если (/д' — /'д)(Р) = 0 для всех Р е У.
Определение 6. Полем функций ¥д (У) многообразия У называется поле рациональных функций на У. Размерность У над ¥д определяется как степень трансцендентности ¥д (У),
Таким образом, проективную кривую, определённую над полем ¥д, можно определить как многообразие размерности один над ¥д, Приведём наглядный пример.
Пример 1. В аффинной плоскости над конечным полем ¥д рассмотрим многообразие X, определённое однородным многочленом У2 Z — X3 — степей и 3, Обозначим х = Х/^ и у = У/^, Поле функ ций ¥д (X) состоит их элементе в вида //д, где /,д е ¥д[х, у]. Поскольку у удовлетворяет уравнению у2 = х3 + 1, то степень трансцендентности ¥д(X) над ¥д равна 1, Таким образом, многообразие X является кривой.
Поскольку при построении АГ-кода мы используем кривую, определённую над конечным полем, то под проективной кривой X/¥д над конечным полем будем понимать проективную кривую X С Р"(¥д), определяемую однородным многочленом с коэффициентами в ¥д, где ¥д — алгебраическое замыкание ¥д. При этом поле рациональных функций кривой X с коэффициентами из ¥д будем обозначать ¥д(X), оно является полем функций кривой X/¥д или её функциональным полем. Множество точек кривой, имеющих координаты в ¥д, обозначается X(¥д), Такие точки называются ¥д-рацио-нальными точками кривой X,
2. Предварительные сведения из теории функциональных полей
Существует альтернативное определение функционального поля без непосредственной привязки к кривой.
Определение 7. Алгебраическим, функциональным полем Р/¥д от одной переменной называется расширение Р пол я ¥д, такое, ч то Р является конечным алгебраическим расширением поля ¥д (х) для некоторого эле мента х е Р, являющегося
¥д
В действительности любое функциональное поле Р от п переменных представляет собой поле дробей Ггас(¥д[х1,х2,... ,хп]//(х1 ,х2,... ,хп)), числители и знаменатели которых являются многочленами от переменных х1, х2,..., хп с коэффициентами в ¥д с учётом редукции по модулю /(х1, х2,..., хп), где /(х1, х2,..., хп) е ¥д[х1, х2,..., хп] — абсолютно неприводимый многочлен.
Согласно сказанному, далее будем ассоциировать с любой кривой X/¥д, заданной многочленом / (х1 ,х2,...,хп) е ¥д [х1, х2,..., хп], её поле функций (функциональное поле) Р = ¥д(X) и дадим ряд базовых определений теории функциональных полей, необходимых для построения математических объектов, которые нужны для определения и построения АГ-кода,
Определение 8. Определим дискретное нормирование функционального поля Р/Рд как функцию
у : Р м Z и {то},
обладающую следующими свойствами:
— у(х) = то ^ х = 0;
— у(ху) = у(х) + у (у) для всех х, у е Р;
— у(х + у) ^ шт{у(х), у (у)} для всех х,у е Р;
— существует х е Р, такой, что у(х) = 1;
— у (а) = 0 для всех а е Р*,
Определение 9. Кольцом нормирования функционального поля Р/Рд называется кольцо О С Р, такое, что Р ^ О ^ Р и для всякого f е Р либо f е О, либо f-1 е О.
Отметим, что точкой функционального поля Р/Р является максимальный идеал некоторого кольца нормирования О этого поля. Таким образом, если О — кольцо нормирования поля Р/Рд и Р — его максимальный идеал, то О единственным образом определяется с помощью Р, а именно: О = ^ е Р : f-1 е Р}■ Поэтому далее вместо О будем писать Ор, а все точки функционального поля Р/Р будем обозначать Рр.
Согласно свойствам, максимальный идеал Р кольца нормирования Ор является главным, т.е. Р = ¿р ОР, При этом эле мент ¿р называется локальным или униформи-зующим параметром.
С каждой точкой Р е Рр ассоциируем дискретное нормирование следущим образом, Всякий элемент f е Р имеет единственное представление f = ¿ри гДе и е Ор = = ОР \ {0} и п е Z, Определим действие дискретного нормирования на элементы
Р
уР (f) = п и уР (0) = то.
Функция уР удовлетворяет всем свойствам определения 8,
Определение 10. Будем говорить, что точка Р является нулём, функции f тогда и только тогда, когда уР ^) > 0 и является полюсом функции f тогда и только тогда, когда уР(f) < 0,
Определение 11. Множество точек Рр порождает абелеву группу Т>р, называемую группой дивизоров поля Р/Рд, Элемент группы Т>р называется дивизором функционального поля Р/Рд и представляет собой формальную сумму точек
Б = £ пР Р, Р еР^
где пР е ^ ^ ^^тан все пР = 0,
Носителем дивизора Б является множество
вирр(Б) = {Р е Рр : пр = 0}.
Для точки Р е Рр и дивизора Б определим нормирование дивизора в точке Р как уР(Б) = пР, Таким образом, мы можем перезаписать дивизор следующим образом:
Б = £ ур(Б) Р.
Р евирр(д)
Отметим, что в группе Цр определено частичное упорядочивание. Будем считать, что Р1 ^ Р2 тогда и только тогда, когда ур(Р^ ^ ур(Р2) для всех Р е Рр, Определим также степень дивизора
= £ ур(Р) deg(P), р еР^
где deg(P) = [Ор/Р : ¥д] — степень расширения поля Ор/Р над ¥д, которое изоморфно
¥д 1
функционального поля Р/¥д соответствуют ¥д-рациопадьпым точкам кривой X/¥д.
Определение 12. Пусть / е Р \ (0}, Обозначим через ^ ^рез N множество нулей (полюсов) / в Рр, Тогда для фупкции / определим её дивизор пулей:
(/)о = Е ур(/) Р;
р
дивизор полюсов:
(/)« = Е (—ур(/)) Р;
р ем
главный дивизор:
(/) = (/)о — (/)«.
Главную роль в определении АГ-кода играет пространство Римана — Роха:
Определение 13. Пространством Римана — Роха, ассоциированным, с дивизором Р е "Цр, называется множество функций вида
Я(Р) = (/ е Р :(/) ^ —Р}и(0}.
Отметим, что Я(Р) является конечномерным векторным пространством над ¥д, а целое число dim(D) = dimЯ(Р) называется размерностью дивизора Р.
В силу изоморфизма ¥д(X) = Р/¥д род алгебраической кривой совпадает с родом её поля функций.
Определение 14. Род функционального поля Р/К определён как д = max{deg(D) — &т(Р) + 1 : Р е "р}. 3. АГ-коды
Покажем, как задаётся код, ассоциированный с функциональным полем алгебраической кривой. Такие коды, как уже сказано, называются геометрическими кодами Гоппы или АГ-кодами,
Зафиксируем следующие обозначения:
— Р/¥р — алгебраическое функциональное поле рода д;
— Р1, Р2,..., Рп — попарно различные точки поля Р/¥р степени один;
— Р = Р1 + ... + Рп — дивизор Цр;
— С е Цр — такой дивизор в Цр, что вирр(С) П вирр(Р) = 0,
Определение 15. АГ-код СЯ(Р, С), ассоциированный с дивизорами Р и С, определён следующим образом:
Ся (Р, С) = ((/(Р1),... , / (Рп)) : / е Я (С)} с ¥п
Отметим, что всякий код Cl(D, G) можно охарактеризовать параметрами [n, k,d], где n — длина кода (число точек в записи дивизор D); k — размерность кода (размерность пространства Римана —Роха L(G) ми dim(G)); d — минимальное расстояние кода (минимальное число отличных от нуля позиций в кодовых словах).
Согласно [6, Theorem 2,2,2], АГ-код Cl(D, G) является [n, k,d]-ra:moM, чьи параметры удовлетворяют следующим условиям:
k = dim(G) - dim(G - D), d ^ n - deg(G). (1)
Утверждение 1 [6, Corollary 2,2,3], Если deg(G) < n, то:
— CL(D, G) является [n, k, d^l-кодом, где d ^ n — deg(G) и k = dim(G) ^ deg(G) + 1 — g;
— если в дополнение deg(G) > 2g — 2, то k = deg(G) + 1 — g;
— если |/i,..., /k} — базис пространства L(G), то матрица
G
fl(Pl) /l(P2) ... /l(PnA /2(Pl) /2 (P2) ... /2(Pn)
e Fp
kxn
\/k (Pl) /k (P2) ... /k (Pn)/
является порождающей матрицей кода Cl(D,G).
Из общей теории кодирования отметим, что Cl (D, G) = {xG : x e F^} и проверочная матрица кода H e Fp" k)xn удовлетворяет уеловию HcT = 0 где c e Cl(D, G),
Важным объектом в теории кодирования является понятие дуального кода к коду Cl(D, G). В действительности его структура еложнее, нежели Cl(D, G), поскольку сопряжена с пространством дифференциалов. Для более детального ознакомления стоит обратиться к [6]. Здесь мы постараемся упростить понимание дуального АГ-кода, не вдаваясь в такие понятия, как пространство дифференциалов, дифференциальный дивизор, адели и вычеты, а опираясь исключительно на свойство дуальности. Далее дуальный код будем обозначать как
CL(D, G)x = {x e F" : (x, c) = 0 для всех c e CL(D, G)},
n
где (x, c) = £ xlcl + ..., xncn. Очевидно, что тогда проверочная матрица H кода i=l
Cl(D, G) является порождающей матрицей кода Cl(D,G)x, Соответственно, представляя порождающую матрицу в систематической форме G = (Ik |A), вде /k —единичная матрица размерности k х k и A e Fkx(n-k), мы без труда можем привести проверочную матрицу к систематическому виду H = (-AT|4-k), вде ^-единич-
(n - k) х (n - k)
Кроме того, будем считать, что код C является самодуальным, если C = C
Согласно [6, Theorem 2,2,7], если 2g-2 < deg(G) < n, то АГ-код CL(D, G)x является [n, k', d']-кoдoм, чьи параметры удовлетворяют следующим условиям:
k' = n + g - 1 - deg(G), d' ^ deg(G) - (2g - 2).
Чем больше минимальное расстояние кода, тем большее число ошибок можно исправить, К сожалению, в отличие от длины и размерности кода, которые можно вычислить явно, в общем случае минимальное расстояние имеет лишь нижнюю границу (как указано выше) и верхнюю границу — границу Синглтона:
d ^ n + 1 — k.
Очевидно, что меньшая размерность даёт более высокую верхнюю границу для минимального расстояния кода. Однако одним из необходимых свойств кода является его относительно высокая размерность, поскольку для заданного кодового слова [п, к, в]-кода лишь к координат содержат фактическую информацию. Другие п — к координат используются для создания избыточности и возможности исправления ошибок, Ес-
к к/п
высоко, что означает эффективность используемого кода. Учитывая верхнюю границу Синглтона, мы можем не получить большого значения минимального расстояния, однако всегда существует компромисс между скоростью передачи информации и способностью кода исправлять ошибки.
Как показано выше, минимальные расстояния кодов Ся(Р, С) и Ся(Р, С)х имеют нижние границы
8 = п — deg(С) и 8' = deg(G) — 2д + 2,
которые называются конструктивным минимальным расстоянием, соответствующего кода и обеспечивают исправление по крайней мере [(8(8') — 1)/2] ошибок, В общем случае рассматриваемые коды могу исправить не больше [(в(в') — 1)/2] ошибок, где в и в — минимальные расстояния кодов Ся(Р, С) и Ся(Р,С)Х соответственно,
4. Декодирование на основе пар, исправляющих ошибки
Одно из важнейших условий применимости того или иного класса кодов в криптографии — существование эффективного алгоритма декодирования для него. Разумеется, декодировать АГ-коды возможно, используя все базовые алгоритмы, справедливые для линейных кодов, однако условию эффективности они не удовлетворяют, Существует ряд модификаций алгоритма декодирования Берлекэмпа — Мэе-си для АГ-кодов, В [7] описывается списочный алгоритм декодирования, работающий за полиномиальное время для любого АГ-кода С с параметра ми [п, к, в] при \¥1;(е) < п — а/п(п — в), где обозначает вес вектора. Однако наиболее эффек-
тивным для АГ-кодов в настоящее время является алгоритм декодирования на основе пар, исправляющих ошибки. Он представляет также большой интерес с криптографической точки зрения, поскольку в [8] предложена атака на произвольный АГ-код, в основе которой лежат пары, исправляющие ошибки. Сложность детерминированной атаки равна 0(п4/од(п)), однако применение вероятностного подхода позволяет уменьшить сложность до 0(п3+е^(п)). Таким образом, пары, исправляющие ошибки, играют важную роль в криптоанализе примитивов, построенных с использованием АГ-кодов,
4,1, Пары, исправляющие ошибки Идея использовать пару линейных кодов для декодирования появилась ещё в 90-х годах XX века и предложена в [9]. Введём ряд обозначений.
Определение 16. Пусть а, Ь е ¥п_ Произведение Шура двух векторов определяется как произведение их соответствующих координат, а именно:
(а1,..., ап) * (Ь1,..., Ьп) = (а^ь..., апЬп), (а1,... ,ап)г = (а1,..., ап).
Аналогично определению 16, введём определение произведения Шура для двух множеств. Пусть А, В С ¥п тогда их произведение Шура определяется следующим образом:
А* В = (а * Ь : а е А, Ь е В}.
Определение 17. Пусть C Е F^ —линейный код. Тогда пара линейных кодов (A, B), где A, Be F^, называется парой, исправляющей t ошибок, для кода C, если выполняются следующие условия:
1) A*BCC
2) k(A) > t;
3) d(Bx) > t;
4) d(A) + d(C) > n.
Здесь &(•) и d(^) — размерность и минимальное расстояние соответствующего кода.
Замечание 1. Пункт 4 в определении 17 может быть заменён эквивалентными утверждениями:
- d(Ax) > 1;
- d(A) > n - 2t,
В обозначениях определения 17 d(C) ^ 2t +1, На практике вместо условия 1 часто ищут коды A, B, такие, что A * C e B±. Это позволяет сократить вычисления для условия 3,
AB
t
семейств кодов.
Утверждение 2. Пусть F — функциональное поле рода g D = P1 + ... + Pn —
дивизор, носитель которого состоит из точек степени один поля F; G, H — дивизоры, такие, что deg(G) ^ 2g deg(H) ^ 2g + 1 и supp(D) П {supp(G), supp(H)} = 0, Тогда
Cl(D, G) * Cl(D, H) = Cl(D, G + H).
Из утверждения 2 следует, что пара (A, B), где A = Cl(D, H) и B = Cl(D, G — H), deg(G) > deg(H) ^ t + g deg(G — H) > t + 2g — 2, является парой, исправляющей t ошибок, для кода Cl(D, G)x,
Если для АГ-кода Cl(D,G) выполняется условие n > deg(G) > 2g — 2, то конструктивное расстояние дуального к нему кода $(Cl(D,G))x = deg(G) + 2 — 2g и всегда найдётся пара кодов (A, B), исправляющая — 9 — 1)/2J ошибок,
A * B
Определение 18. Пусть C C F^, Стабилизатор кода C определяется следующим образом:
stab(C) = {x Е F^" : Vc Е C(x * c Е C)}. A, B
k(A * B) ^ k(A) + k(B) — fc(stab(A * B)).
1
только тогда, когда код является прямой суммой двух подкодов Cl(D, G) и Cl(D, G') с непересекающимися носителями дивизоров G и G' или порождающая матрица кода имеет нулевой столбец, В противном случае k(A * B) ^ k(A) + k(B) — 1,
4,2, Алгоритм декодирования Далее рассмотрим алгоритм декодирования, предложенный в [9], Введём ряд обозначений.
Определение 19. Пусть I = {jb ..., js} e {1,..., n}, x = (x1,..., xn) Е F^ и AC F^, Тогда:
1) xi = (xj1 ,...,xjs);
2) Z(x) = {i e {1,... ,n} : x, = 0};
3) Z(A) = {i e {1,..., n} : a, = 0 для Bcexa e A};
4) A(l) = {a e A : ai = 0}.
Пусть Cl(D, G) — АГ-код с параметрами [n, k,d], y = c + e —принятый вектор, /e = {i : e, = 0} = supp(e), (A, B) — пара, пеправляющая t ошибок, для кода CL(D, G), Алгоритм декодирования можно разделить на две части: 1) поиск множества I 1Э /е, где |Ie| = wt(e) ^ t;
e
На первом шаге необходимо найти множество, равное или содержащее в себе позиции ошибок в полученном слове. Сложность этой процедуры заключается в незнании элементов множества /е. Для нахождепня I используют пару кодов (A, B),
Утверждение 3 [9, Theorem 2,14], Если k(A) > t и |/e| ^ t, то A(Ie) = 0-
Рассмотрим множество M = {a e A : (а * y,b) = 0 для всех b e B}, являющееся ядром отображения ф: а м- (b м- (a * y, b)).
Утверждение 4 [9, Proposition 2,9], Пусть y = c + e —принятый вектор, /e = = supp(e), C С F" —линейный код. Если A* B С Cто
1) A(Ie) С M С A;
2) если d(Bx) > t, то A(Ie) = M.
(A, B)
то множество Z(M) те является тривиальным и содержит /е. Разумеется, на практике не обязательно брать в качестве I имени о Z (M), Это не оптимально ввиду большой вычислительной сложности.
Замечание 2. Пусть a e M и M = A(/e). Тогда Ie С Z(a). Следовательно, в качестве множества I можно использовать I = Z(a).
Замечание 3. Нахождение множества M = {a e A : (a * y, b) = 0 для всех b e B} сводится к вычислению левого ядра матрицы, составленной из образов базисных векторов кода A, полученных применением отображения 0 a м (b м (a * y,b)), что эквивалентно вычислению правого ядра матрицы линейного отображения ф,
H
матрица, имеющая n столбцов, I = Z(a) — множество, вычисленное на шаге 1, Тогда Hi — подматрица, чьи столбцы проиндексированы элементами множества I, и ненуле-
e
H^T = Hy . (2)
Отметим, что решение системы (2) в общем случае не единственно,
(A, B)
Если d(A) + d(C) > n, k(A) > t и I = Z(a), то |1| < d(C) и существует не более одного решения системы (2),
Доказательство. Пусть Ie С i = Z(a), a e M, |/e| = t и y = c + e — полученный вектор. Определим отображение
(f* ->• Fn,
I Ri(xi) = (xl,..., xn) e F", x, = 0, если i e I, и x, = x^, если i e i.
Очевидно, что Не? = Н ■ Д^е?)1" = Нет = Нут, Таким образом, система (2) имеет решение е?.
Теперь докажем единственность решения при в(А) + в(С) > п и к(А) > Если нашлось ещё одно решение системы, например х?, то
И (Я?(х?))т = Ня? = И (Д(е?))т = Нет = Нут
Следовательно, Н (Д(х?) — е)т = 0, а также
лч1(Я3(х3) — е) ^ ^(а)| ^ п — в(А) < в(С).
Получили Яз(хз) — е = 0, и, таким образом, нетривиальное решение системы единственно, ■
Описанные шаги можно представить в виде алгоритма 1,, Алгоритм 1. Декодирование
Вход: Ся(Р, С) — АГ-код, (А, В) — пара, псправляющая £ ошибок, у = с + е —полученный вектор с ошибкой. Выход: е? с,
1: Вычислить М = (а е А : (а * у, Ь) = 0 для всех Ь е В}, 2: Если М = 0, то 3: перейти па шаг 11,
а := (х) х е М
5: Вычислить ? = Z(а), 6: Построить матрицу Н?
7: Решить систему уравнений Нзпт = Нут относительно п. 8: Если \¥1;(п) > ¿, то 9: перейти на шаг 11, 10: Вернуть е? = цс = у — Д^е?), 11: Вернуть «В полученном векторе более £ ошибок.»
Замечание 4. На шагах 1 и 2 необходимо вычислить ядро М отображения ф,
а также Z(а), где а е М, Далее решается система из максимум п уравнений с п
неизвестными. Таким образом, сложность алгоритма равна 0(п3),
5. Примеры
Рассмотрим ряд примеров построения АГ-кодов, ассоциированных с эллиптической и эрмитовой кривыми, а также с квартикой Клейна, Для каждого построенного кода найдём соответствующую пару, исправляющую ошибки,
5,1, АГ-коды на эллиптических кривых
Определение 20. Алгебраическое функциональное поле Р/¥д называется эллиптическим, если выполняются следующие условия:
1) д(Р/¥д) = 1;
2) существует дивизор А е Др, такой, что deg(A) = 1,
Отметим некоторые факты, касающиеся эллиптических кривых и их функциональных полей. На протяжении всего п. 5,1 под Я = ¥д(х, у) будем подразумевать эллиптическое функциональное поле, В зависимости от характеристики базового поля, уравнение функционального поля эллиптической кривой может быть задано следующим образом:
— если char (Fq) = 2, то существуют x,y e F, такие, что F = Fq(x,y) и
y2 = f (x),
где f (x) e Fq [x] — свободный от квадратов многочлен и deg(f) = 3;
— если char (Fq) = 2, то существуют x,y e F, такие, что F = Fq(x,y) и
y2 + y = f (x), где f (x) e Fq[x] и degf = 3,
или
y2 + y = x +---, где a, b e Fq и a = 0.
ax + b
Отметим, что [n, ^-код, ассоциированный с эллиптическим функциональным полем, является MDS-кодом (достигает границы Синглтона) тогда и только тогда, когда для любого подмножества точек {P,1, P,2,..., Pjfc} С supp(G) дивизор вида Pj1 + P,2 + ... + P,fc — kP^ не является главным. Согласно границе Хаеее — Вейля, максимальное количество рациональных точек эллиптической кривой X, или точек степени один функционального поля, равно q + 1 + 2^q. Таким образом, рассмотрение кривых с числом точек, достигающим границы Хассе — Вейля, позволяет максимально увеличить длину кодового слова,
x, y e
e Fq (X) можно вычислить соответствующие нормирования
—(x) = 2, —(y) = 3 и — (xV ) = 2A + 37
для некоторых A, y e Z>0, Соответственно базис пространства Римана — Роха L(aP^), a e Z>0, ассоциированного с дивизором, кратным бесконечно удалённой точке, состоит из функций f = xAy7, где A e N Y e {0,1} 2A + 3y ^ a, и имеет вид
с 2 3 2 4 3
{1,x,y,x ,xy,x ,x y,x ,x y,.. .}.
Пример 2. Пусть F = Fq(x, y) — эллиптическое функциональное поле с уравнением y2 = x3 + 7x + 4 и q = 17. Отметим, что g(F) = 1, Построим АГ-код, ассоциированный с заданной эллиптической кривой, и найдём пару, исправляющую ошибки, для построенного кода.
Зададим дивизор D = Pl + P2 + ... + Pl2, где P, — точки степени один поля F для i = 1,..., 12:
Pl = (0,15), P2 = (0, 2), P3 = (3,16), P4 = (3,1), P5 = (15,13), Pe = (15, 4), P7 = (11,16), P8 = (11,1), P9 = (16, 9), pio = (16, 8), Pn = (2,14), Pl2 = (2, 3).
Зададим дивизор G = m ■ P^, где P^ — полюс функций x и y, и пусть m = 5,
Вычислим базис пространства Римана —Роха L(G) = L(5P^), необходимый для построения АГ-кода Cl(D,G). Для этого рассмотрим дискретные нормирования функций, являющихся претендентами па базис L(G), значения которых в точке P^ не должны превышать m = 5 (табл. 1),
Таблица 1
Значения нормирования Базис % (О)
^(1) = 0 1
У<х>{х) = = 2 х
^(у) = = 3 у
= 4 2 х2
= 5 ху
= 6 _
Запишем порождающую и проверочную матрицы кода С%(Р,С):
О
Н
1 0 0 0 0 8 10 0 8 14 8 16
0 1 0 0 0 9 1 11 4 15 4 13
0 0 1 0 0 14 7 9 2 16 1 16
0 0 0 1 0 3 15 13 7 10 12 14
0 0 0 0 1 1 2 2 14 14 10 10
1 0 0 0 0 0 0 6 11 12 4 0"
0 1 0 0 0 0 0 6 14 9 8 13
0 0 1 0 0 0 0 5 11 10 0 7
0 0 0 1 0 0 0 5 6 15 8 16
0 0 0 0 1 0 0 5 13 12 6 14
0 0 0 0 0 1 0 5 8 0 15 5
0 0 0 0 0 0 1 16 11 6 10 7
Код (Р,С), ассоциированный с определённой выше эллиптической кривой, имеет параметры [12,5,7], а его дуальный код (Р, С)^ — параметры [12, 7,5].
Для построения пары, исправляющей ошибки, для кода (Р,С) необходимо определить вспомогательный дивизор
Н = (£ + д) Р^ = 3 Рте,
где £ = | (п — deg(G) — 1 — д)/2], Тогда для кода (Р, С) парой, нсправляющей £ = 2 ошибок, является пара кодов А = (Р, Н) и В = С^>(Р, С+Н) с параметрами [12, 3, 9] и [12, 4, 8] соответственно,
5,2, АГ-коды на эрмитовых кривых Определение 21. Функциональное поле Р = Ея2 (х,у), определённое уравнением эрмитовой кривой
Vя + V
х
9+1
будем называть эрмитовым функциональным полем.
Отметим некоторые факты, касающиеся эрмитовых функциональных полей. На протяжении всего п. 5.2 под Р = Ея2 (х, у) будем подразумевать эрмитово функциональное поле, для которого справедливо:
- д(Р) = д(д — 1)/2;
— Р имеет д3 + 1 точек степени один над полем Ея2 следующего вида:
1) бесконечно удалённая точка — общий полюс функций х и у;
2) для каждого а Е Ея2 существует д элементов в Е Ея2, таких, что в9 + в = ая+1; и для всех таких пар (а, в) существует единственная точка Ра,в степени один, где х(Ра,в) = а и у(Ра,в) = в;
— для некоторого г ^ 0 функции вида жгу7, где 0 ^ г,0 ^ ] ^ д — 1 и гд + ](д +1) ^ г, образуют базис пространства Римана —Роха ^(гфте).
Определение 22. Для г € Ъ определим эрмитов АГ-код
сг = с^(в,гад, в = Е Ра,в,
в«+в=«д+1
где дивизор В является суммой всех точек первой степени (кроме точки эрмитова функционального поля В/Ед2,
Семейство эрмитовых кодов представляет особый интерес, поскольку в определённых случаях наряду с длиной и размерностью можно явно вычислить минимальное расстояние таких кодов. Над полем эрмитов код имеет длину п = д3.
Для некоторого г ^ 5 имеем Сг С Это включение следует из включения соответствующих проетранет Римана —Роха ^(В,г^те) С ^Если г ^ 0, то ^ (гфте) = 0 и Сг = 0, Есл и г > д3 + д2 — д — 2 = д3 + (2$ — 2), то, учитывая (1), имеем
к(Сг) = — — В) = (г + 1 — $) — (г — д3 + 1 — $) = д3 = п
и, следовательно, Сг = Вд2- Согласно [6], для 0 ^ г ^ д3 + д2 — д — 2 справедливо следующее
Утверждение 5. Пусть Сг — эрмитов код и 0 ^ г ^ д3 + д2 — д — 2, Тогда:
— Дуальным к коду Сг является
С Сд3+д2—д—2—г.
Код Сг является самодуальным, если г = (д3 + д2 — д — 2)/2 (что, на самом деле, возможно только в случае, если д является степенью 2),
— Размерность Сг определяется следующим образом:
fc(Cr)
|1 (r)| , 0 ^ r ^ q3,
q3 - |1 (s)| , q3 ^ r ^ q3 + q2 - q - 2,
где 5 = д3 + д2 — д — 2 — г ж I(г) = {0 ^ п ^ г : Зг € В ((г= },
Для д2 — д — 2 ^ г ^ д3 имеем
к(Сг ) = г + 1 — д(д — 1)/2.
— Минимальное расстояние й кода Сг удовлетворяет неравенству
й(Сг) ^ д3 — г.
Если 0 ^ г ^ д3 и г, (г3 — г) являются полюсными числами для точки (т. е. существуют функции /, /' € В, такие, что (/= и (/= (г3 — то
й(Сг) = д3 — г.
ПримерЗ. Пусть В = (ж, у) — функциональное поле эрмитовой кривой
с уравнением у3 + у = ж4 и д = 3. Зададим дивизор В = В! + В2 + . В^ — точки первой степе ни для г = 1,..., 27:
Pi = (0, 0),
P7 = (a2, 2), P13 = (2, 2), P19 = (a6, 2), P25 = (1, 2),
P2 Ps Pi4 P20 P26
(0, a6), (a2, a), (2, a), (a6, a), (1, a),
P3 P9 P15
P21
P27
(0, a2), (a2, a3), (2, a3), (a6, a3), (1,a3).
P4
P10 P16 P22
(a, a5), (a3, a5), (a5, a5), (a7, a5),
P5
P11
P17 P23
(a, a7), (a3, a7), (a5, a7), (a7, a7),
+ P27, где
P6 = (a, 1), P12 = (a3, 1), Pis = (a5, 1), P24 = (a7, 1),
Здесь а — корень примитивно го над ¥я многочле на f (х) = х2 + 2х + 2,
Зададим дивизор С = г • , где ^^ ^ ^^^^^ ^адюс функций х и у толя Р и г = 17.
Вычислим базис пространства Римана — Роха %(С) = %(17Qж), необходимый для построения АГ-кода С% (О, С). Для этого рассмотрим дискретные нормирования функций, являющихся претендентами на базис % (С), в точ ке Qж, значения которых не должны превышать г =17 (табл. 2).
Таблица 2
Значения нормирования Базис % (С)
^(1) =0 1
^(ж) = 3 ж
^(у) = 4 У
^то(ж2) = 6 2 ж2
^то(жу) = 7 жу
^(у2) = 8 У2
^то(ж3) = 9 3 ж3
^то(ж2у) = 10 2 ж2у
^то(жу2) = 11 2 жу2
^(ж4) = 12 4 ж4
^то(ж3у) = 13 3 ж3у
^(ж2у2) = 14 22 ж2у2
^то(ж5) = 15 ж5
^то(ж4у) = 16 4 ж4у
^(ж3у2) = 17 32 ж3у2
^(ж6) = 18 _
Запишем порождающую и проверочную матрицы кода (О, С):
С
1 0 0 0 0 0 0 0 0 0 0 0 0 0 а 0 1 а а5 а а7 2 а 00 0 а 00 а5 1
0 1 0 0 0 0 0 0 0 0 0 0 0 0 а 0 а2 0 2 а3 а6 0 0 а5 2 а6 а3
0 0 1 0 0 0 0 0 0 0 0 0 0 0 а 0 а3 а5 а5 а2 а2 а6 0 1 а7 а5 а
0 0 0 1 0 0 0 0 0 0 0 0 0 0 а6 0 2 а3 2 а3 0 а а6 а а7 0 а7
0 0 0 0 1 0 0 0 0 0 0 0 0 0 а6 0 а а а 0 а 1 а3 а5 а7 а5 а6
0 0 0 0 0 1 0 0 0 0 0 0 0 0 а6 0 а3 2 0 а3 2 1 2 а7 а5 а3 а
0 0 0 0 0 0 1 0 0 0 0 0 0 0 а5 0 1 а5 а7 а 0 а6 а а а6 а2 а5
0 0 0 0 0 0 0 1 0 0 0 0 0 0 а5 0 а а2 а5 а6 а 0 1 а2 а6 0 1
0 0 0 0 0 0 0 0 1 0 0 0 0 0 а5 0 а6 2 а3 а3 а а а3 а2 2 2 а6
0 0 0 0 0 0 0 0 0 1 0 0 0 0 а7 0 0 а7 1 а5 а6 2 а2 а а2 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 а7 0 1 а2 а6 а7 а7 а а3 а6 а5 а а2
0 0 0 0 0 0 0 0 0 0 0 1 0 0 а7 0 2 а а7 0 1 а а5 а5 а 1 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 а2 а6 а2 а а7 а а6 1 а6 а2 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 а6 а2 а7 а а2 а7 0 а3 1 а7 а5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 а3 а3 а3 а а а
H
1 0 0 0 0 0 10 0 0 0 0 10 0 0 0 0 1 0 0 0 0 0 1 00000 00000 00000 00000 00000 00000 00000
0000 0000 0000 0000 0000 1000 0100 0010 0001 0000 0000 0000
0 0 1
0 0 1
0 0 1
0 0 a7
0 0 a7
0 0 a7
0 0 a3
0 0 a3
0 0 a3 10
01 00
0 a6 0 a2 0 2 a5 a3
2 0 0 a
66
1a
0 a7
0 a7
01 0 a5 00 0a 0 a5 0 a7 0 a3 11
aa 21
3
75 a7 a5 a
1 1 a
6
aa a3 2 1 a3
7
a7 a
0 a2 20
20
0a
a5 a
2a
57 a5 a7
2576
aaaa
aa
2
1
2
a2 a
227 a2 a2 a7 a
0 a3 a7 a
a
6 a3
a a 2 1
aa
37 a3 a7
0
73
5 a2 a 0 2
aa a2 a3
5553
aaaa
7
aa 00
3
1
a7 a6 1 a2
1 a6 a3
1 a a 1
2
a2 a2
1a 0 a5 11
1
a7
5
a a5 a3 a2
77 a7 a7
62
1
aa 2 2
3
a
a3 22
aaaa
Код Cl(D, G), ассоциированный с определённой выше эрмитовой кривой, имеет параметры [27,15,10], а его дуальный код Cl(D, G)^ — параметры [27,12,13],
Для построения пары, исправляющей ошибки, для кода Cl(D, G) необходимо определить вспомогательный дивизор:
H = (t + g) Q^ = 6 Q^,
где t = |_(n — deg(G) — 1 — g)/2j, В нашем случае g = 3 и t = 3, Тогда для кода Cl(D, G) парой, исправляющей t = 3 ошибки, является пара кодов A = Cl(D,H) и B = (D, G + H) с параметрами [27,4,21] и [27,6,19] соответственно.
Для построения пары, исправляющей ошибки, для кода (D, G) необходимо, чтобы t = |_(deg(G) — 3g + 1)/2j, Определим вспомогательный дивизор
H' = (t + g) Q^ = 7 Q^.
Тогда для кода C^(D,G) пару, исправляющую 4 ошибки, составляют коды A = = CL(D, H') и B = CL(D, G — H') с параметрами [27, 5, 20] и [27, 8,17] соответственно, 5,3, АГ-коды на квартике Клейна Предположим, что char (Fq) = 7. Рассмотрим функциональное поле F = Fq(z,y) квартики Клейна, заданное уравнением
z3 + y3 z + y
0.
(3)
После умножения (3) на y6, полагая x = — y2z, можем записать F = Fq(x,y), где
3
x
У
1 — x
(Fq) = 7 F
нальным. Дадим пару определений, чтобы записать основные свойства этого функционального поля.
Определение 23. Пусть F'/Fq — алгебраическое расширение функционального F/Fq
— Говорят, что точка P' e PF' лежит над точкой P e P^, если P С P',
— Пусть точка P' e PF' лежит тад то чкой P e PF, При этом нормирования в рассматриваемых точках связаны следующим соотношением:
iy (x) = e ■ vP (x) для всex x e F.
Если e > 1, то говорят, что точка P разветвляется.
2
a
5
2
a
5
6
a
a
3
7
a
a
7
a
3
3
a
a
Перечислим свойства функционального поля квартики Клейна:
1) я(Р) = 3;
2) ровно три точки поля ¥я (ж) являются точками ветвления в Р/^, а именно: полюс и пуль Р1 функции ж, а также нуль Р2 функции ж — 1, Обозначим через Q<X1, точки, лежащие над Рте, Р1, Р2 соответственно;
3) точки Qте,Q1 и Q2 являются точками степени один;
4) отображение
ж — 1
ж I—>
ж
0 : <
У
ж
Уз
является автоморфизмом порядка 3 тол я Р/^, который циклично порождает точки Qте,Ql^2, т.е. 0(0^^)) = 0^1) = Q2■ Рассмотрим некоторый подкласс АГ-кодов, ассоциированных с квартикой Клейна, а именно коды, для которых дивизор С определён следующим образом:
С = + + к2Q2 > 0,
где к € N0 \ {1, 2, 3, 4} г = 0,1, 2 (N0 = {0,1, 2,...}), и будем считать, что deg(С) ^ 5, Тогда по теореме Римана —Роха dim(С) = deg(С) — 2, Согласно [13], определим базис пространства Римана —Роха £(С),
Лемма 1. Если С = + + > 0 гДе к € N0 \ {1, 2, 3, 4}, то базис пространства Римана —Роха £(С) состоит из степеней и произведений следующих элементов:
ж У2
ж
^2 = -, У
^з = ж,
¿1 = 0(^1) = VI = 02М
-, ¿2 = 0М = -7
— 1 У
ж
ж
з
^2 = 02(^2) =
ж2
¿3 = 0(^з) ^з = 02(^з) =
ж1
ж
1ж
Для к1 = к2 = 0 к0 ^ 5
= К1 ^ 0, 3в1 + 5в2 + 7вз ^ кю>.
Для к2 = 0 к0 ^ к1 ^ 5:
+ ад) = «<<3^ 0, 3в1 + 5в + 7вз ^ к0, ¿71 ^¿Г |7г ^ 0, 371 + 572 + 77з ^ к1,
Для к1 = 0 к0 ^ к2 ^ 5:
+ ад) = К1 ^в2^в3 |вг ^ 0, 3в1 + 5в + 7вз ^ к0,
V/1 V,72V71 |7г ^ 0, 371 + 572 + 77з ^ к2,
>
5
1
У
Для к0 ^ кг ^ 5 г = 1, 2:
£(ко^ + + к2^2) = К1 ^в2^в3|вг ^ 0, 3в1 + 5в2 + 7вз ^ ко,
V?1 ^VI1 |7г ^ 0, 371 +572 + 77з ^ к1, г!1 ^2241 ^ 0,3^1 + 5& + 7^з ^ к2,
г1)2,у1г1, (у1г1)2,(^1у1)2).
Главные дивизоры элементов, участвующих в построении базиса £(С), имеют вид
(wi) = (vi) = (zi) =
ж -1
У
= 2Q2 + Qi - (w2) = 2Qi + Q^ - 3Q2, (v2) = = 2Q^ + Q2 - 3Qi, (z2) =
ж
- ) = Q2 + 4Qi - 5Q^, (wa) = (ж) = 7Qi - 7Q^,
4 У 5
-5) = Qi+4Q~-5Q2, (va)= (ц-ж) =7Q^-7Q2, У4) = Q<» + 4Q2 - 5Qi, (za) = (^J = 7Q2 - 7Qi.
Пример 4. Пусть Р = (ж, у) — функциональное поле квартики Клейна с уравнением ж3у + у3 + ж = 0и д = 5,
Зададим дивизор В = Р1 + Р2 + ... + Р25, где Рг — точки степени один поля Р для г = 1,..., 25:
Pi = (0,0), P2 = (1,0), Pa = (a4, a), P4 = (a2a ,aa), P5 = (a9, a4),
Рб = (a20, a5), P7 = (4, 2), Ps = (3,2), P9 = (ai6 , as), Pio = (a7, 4),
Pii = (a11, 4), Pi2 = (3, 4), Pia = (a, aia), Pi4 = (a2, aia), Pi5 = (aii,aia),
Pi6 = (a7 ,ai4), Pi7 = (ai9,ai5), Pis = (as,ai6), Pi9 = (a5, ai7), P20 = (a7,ai7),
P2i = (ai0,ai7), P22 = (4, ai9), P23 = (a2i,a20), P24 = (aii , a22), P25 = (4, a2a).
Здесь а —один из корней примитивного многочлена f (ж) = ж2 + 4ж + 2 над
Зададим дивизор С = т^^^е т = 13, Вычислим базис пространства Римана — Роха
^(С) = ^(13^) = К1 ^в2^в3 |вг ^ 0, 3в1 + 5в2 + 7вз ^ 13),
необходимый для построения АГ-кода (В, С), Для этого рассмотрим дискретные нормирования функций, являющихся претендентами на базис ^(С), в точке (табл.3),
Запишем порождающую и проверочную матрицы кода (В, С):
G
1 0 0 0 0 0 0 0 0 0 0 a2a ai0 a20 a20 aa ai4 a4 ai0 aii a2a aii a 00 ai4 a5a
0 1 0 0 0 0 0 0 0 0 0 a2 a7 a7 0 a ai5 a22 a21 a 9 a9 a2 a5 aii 0
0 0 1 0 0 0 0 0 0 0 0 ai4 3 a22 ai4 ai6 a2 aia ai7 a7 aa 9 a9 ai7 a5 ai9
0 0 0 1 0 0 0 0 0 0 0 a9 a7 ai7 aa 3 ai4 a5 a20 aii as a22 aia 1 a
0 0 0 0 1 0 0 0 0 0 0 a2 a20 a22 a4 4 ai0 a22 ai5 4 aa a2a 9 a9 ai4 ai4
0 0 0 0 0 1 0 0 0 0 0 a20 9 a9 a22 ai7 aia 0 a22 9 a9 a5 ai9 4 ai5 a aii
0 0 0 0 0 0 1 0 0 0 0 ai5 a4 2 a22 aia a2 a21 1 a4 9 a9 ai0 ai9 9 a9 ai5
0 0 0 0 0 0 0 1 0 0 0 a2a a7 ai0 a4 3 a5 ai7 ai6 a21 a20 aii 4 2 3
0 0 0 0 0 0 0 0 1 0 0 a20 a4 ai6 a4 ai0 ai6 0 a 4 ai6 ai9 1 aa aii
0 0 0 0 0 0 0 0 0 1 0 aii ai6 a2i a20 ai9 a21 aia 3 a20 a20 ai4 1 1 1
0 0 0 0 0 0 0 0 0 0 1 a21 a4 a4 aii as ai5 2 a7 3 3 ai7 4 as a2
У
a
У
н
1 0 0 0 0 0 0 0 0 0 0 0 0 0 9 а9 а15 а8 1 а11 а4 2 а19 а15 а21 а11
0 1 0 0 0 0 0 0 0 0 0 0 0 0 а5 9 а9 а5 а23 а3 а20 9 а9 а13 а22 а23 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 а17 2 а11 а13 а20 а19 а а19 а5 0 9 а9
0 0 0 1 0 0 0 0 0 0 0 0 0 0 а14 а23 а13 а22 а8 а2 а19 2 а14 а13 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 а16 а7 а3 9 а9 а11 а17 а8 а21 2 а5 а2
0 0 0 0 0 1 0 0 0 0 0 0 0 0 а5 0 9 а9 а19 а10 а3 а23 0 а22 а23 а23
0 0 0 0 0 0 1 0 0 0 0 0 0 0 а7 а13 а22 а17 а8 а7 а4 а19 а19 а23 а16
0 0 0 0 0 0 0 1 0 0 0 0 0 0 а14 а23 а10 4 а2 4 0 а5 а2 а19 а
0 0 0 0 0 0 0 0 1 0 0 0 0 0 а2 а20 а16 а а2 а15 а3 а20 а5 а16 а2
0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 а10 4 9 а9 а15 а7 а7 а13 а2 а8 а2
0 0 0 0 0 0 0 0 0 0 1 0 0 0 а10 а22 3 а4 а22 а3 а21 а а8 а11 3
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 а а3 а5 2 а20 а7 а4 0 а13 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 а10 а15 а4 9 а9 а4 а7 а22 а17 3 а7 а7
0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 а10 а3 а а7 а2 а19 4 а11 а8 0
Таблица 3
Значения нормирования
Базис & (С)
wf1 ^в2 ^в3
^(1) =0
^ I I =6
,(х) = 7
^ ( уз I =8
^ ( у6 1 = 9
^ ( — 1 =10
у5 1 = 11
^ — =12
ч у4^ =13
V» (х4) = 14
х „.2
ш2 ш3
^ 1^2
и»0
2 1 2
122
^ Т = 3
5
V™ —
оо
У
у
2
х
4
у
з
У
3
3
х
6
у
2
х
2
у
3
3
х
5
у
2
х
у
у
3
3
х
4
у
Код (Д,С), ассоциированный с определённой выше квартикой Клейна, имеет параметры [25,11,12], а его дуальный код (Д, — параметры [25,14, 9],
Для построения пары, исправляющей ошибки, для кода (Д, С) необходимо, чтобы т > где £ = [(п — deg(G) — 1 — у)/2]. В нашем случае у = 3 и £ = 4, Определим вспомогательный дивизор:
н = (* + у) = 7
Тогда для кода (Д, С) парами, исправляющими 4 ошибки, являются:
— Л = (В, Н) и В = (В, С + Н) с параметрами [25, 5,18] и [25, 7,16] соответственно;
— Л = (В,Н) и В = (В,Н — С) с параметрами [25, 5,18] и [25, 7,16] соответственно.
Для построения пары, исправляющей ошибки для кода (В, С), необходимо, чтобы £ = L(deg(G) — 3д + 1)/2], В нашем случае д = 3 и £ = 2, Определим вспомогательный дивизор
Н' = (£ + д) = (2 + 3)
Тогда для кода (В, С) пару, исправляющую две ошибки, составляют коды Л = = С^(В, Н') и В = С^(В, С — Н') с параметрами [25, 3, 20] и [25, 6,17] соответственно, 5,4, Пример декодирования АГ-кода на эллиптической кривой Рассмотрим АГ-код на эллиптической кривой, построенный в п, 5,1, Пусть В = (ж, у) — эллиптическое функциональное поле с уравнением у2 = = ж3 + 7ж + 4 и д = 17. Запишем порождающую и проверочную матрицы [12, 5, 7]-кода С*(В, С), где С = 5Рте:
G
H
1 0 0 0 0 8 10 0 8 14 8 16
0 1 0 0 0 9 1 11 4 15 4 13
0 0 1 0 0 14 7 9 2 16 1 16
0 0 0 1 0 3 15 13 7 10 12 14
0 0 0 0 1 1 2 2 14 14 10 10
1 0 0 0 0 0 0 6 11 12 4 0"
0 1 0 0 0 0 0 6 14 9 8 13
0 0 1 0 0 0 0 5 11 10 0 7
0 0 0 1 0 0 0 5 6 15 8 16
0 0 0 0 1 0 0 5 13 12 6 14
0 0 0 0 0 1 0 5 8 0 15 5
0 0 0 0 0 0 1 16 11 6 10 7
е коды A = Cl(D,H) и B = C^ (D,G
ми [12, 3,9] и [12,4,8], составляющие пару, исправляющую £ = 2 ошибки для кода С^(В, С), Запишем порождающие матрицы соответствующих кодов:
G
A
1 0 0 8 2 0 15 6 7 3 5 12
0 1 0 9 11 13 5 14 0 4 1 11
0 0 1 1 5 5 15 15 11 11 12 12
1 0 0 16 0 3 12 4 8 1 8 15
0 1 0 16 0 3 0 16 15 11 11 12
0 0 1 16 0 0 5 12 9 8 8 9
0 0 0 0 1 16 3 14 4 13 4 13
G
Пусть у = (2 13 15 14 8 1 8 6 12 7 2 6)—вектор из кода С^ (В,С),содер-
1
ключаетея в нахождении ядра М = (а € Л : (а * у, 6) = 0 для всех Ь € В} отображения ф : а м- (Ь м- (а * у, Ь)), Как упомянуто в замечании 2, можно ограничиться нахождением одного вектора из ядра, что и продемонстрировано далее. Пусть Ь € Ов, вычислим матрицу, столбцы которой составляют значения у * 6 :
2 0 0 0
0 13 0 0
0 0 15 0
3 3 3 0
0 0 0 8
3 3 0 16
11 0 6 7
7 11 4 16
11 10 6 14
7 9 5 6
16 5 16 8
5 4 3 10
Необходимо найти один вектор a G A | (a, y * b) = 0, для этого подействуем отображением ф на все базисные векторы ~ca¡ G Ga Из полученных образов составим матрицу:
12 5 5 0 12 5 5
g<KA) = 12 12 12 0 rs^ 12 12 12
7 7 7 0 7 7 7
Найдя левое ядро матрицы Gф(д) и выбрав случайный вектор из ядра, получим соответствующие коэффициенты в линейном разложении вектора а, образ которого равен нулевому вектору:
x • Gф(А) = [0 0 0] , x Е SpanFq{(0,1, 8)}, M = SpanFq{(0 • 0о + at + 80^)}, а = 0 • öt + 1 •at + 8 • ät | Ф(а) = 0 Vb Е B, а = (0 18 0 0 2 6 15 3 7 12 5) .
Очевидно, что Ie С I = Z(a) = {0, 3, 4}, Перейдём к шагу 6 и построим проверочную матрицу Hi
100 000 000 И =010 0 0 1 0 0 0 000
Решив систему уравнений HgwT = Иут относительно u, получим
ет = u = (7 10 0) t R(e3) = (7 00 10 0000000 0) . Окончательно в результате процедуры декодирования имеем
y - R(ea) = ( 2 13 15 14 8186 12 726) - (700 10 00000000) = = ( 12 13 15 4 8186 12 726) = c е CL (D, G).
ЛИТЕРАТУРА
1. Гоппа В. Д. Коды, ассоциированные с дивизорами // Проблемы передачи информации. 1977. Т. 13. №1. С. 33-39.
2. TsfasmanM.A., Vládutx S. G., and Zink Th. Modular curves, Shimura curves and Goppa codes, better than Varshamov — Gilbert bound // Math. Nachr. 1982. V. 109. P. 21-28.
3. Ihara Y. Some remarks on the number of rational points of algebraic curves over finite fields // J. Fac. Sci. Univ. Tokyo. Sect. IA Math. 1981. V.28. P. 721-724.
4. Garcia A. and Stichtenoth H. A tower of Artin — Schreier extensions of function fields attaining the Drinfeld — Vladut bound // Inventiones Mathematicae. 1995. V. 121. P. 211-222.
5. Кокс Д., Литтл Док., О'Ши Д. Идеалы, многообразия и алгоритмы. Введение в вычислительные аспекты алгебраической геометрии и коммутативной алгебры. М.: Мир, 2000. 687 с.
6. Stichtenoth Н. Algebraic Function Fields and Codes. Springer Verlag, 1991.
7. Guruswami V. and Sudan M. Improved decoding of Reed — Solomon and algebraic geometry codes 11 IEEE Trans. Inform. Theory. 1999. V.45. P. 1757-1768.
8. Couvreur A., Márquez-Corbella I., and Pellikaan R. Cryptanalvsis of McEliece crvptosvstem based on algebraic geometry codes and their subcodes // IEEE Trans. Inform. Theory. 2017. V.63. P. 5404-5418.
9. Pellikaan R. On decoding by error location and dependent sets of error positions // Discrete Math. 1992. V. 106-107. P. 113-121.
10. Márquez-Corbella I. and Pellikaan R. Error-correcting pairs: a new approach to code-based cryptography // 20th Conf. АСА 2014, Jul 2014, New York, USA. https ://hal. science/ hal-01088433/document.
11. Pellikaan R. On the existence of error-correcting pairs // Statistical Planning Inference. 1996. V. 51. P. 229-242.
12. Couvreur A., Panaccione I. Power Error Locating Pairs, https://arxiv.org/abs/1907. 11658v3.
13. Wesemeyer S. On the automorphism group of various Goppa codes // IEEE Trans. Inform. Theory. 1998. V.44. No. 2. P. 630-643.
REFERENCES
1. Goppa V.D. Kodv, assotsiirovannve s divizorami [Codes associated with divisors]. Problemv Peredachi Informatsii, 1977, vol. 13, no. 1, pp. 33-39. (in Russian)
2. TsfasmanM.A., Vladutx S. G., and Zink Th. Modular curves, Shimura curves and Goppa codes, better than Varshamov — Gilbert bound. Math. Nachr., 1982, vol. 109, pp. 21-28.
3. Ihara Y. Some remarks on the number of rational points of algebraic curves over finite fields. J. Fac. Sci. Univ. Tokyo, Sect. IA Math., 1981, vol.28, pp.721-724.
4. Garcia A. and Stichtenoth H. A tower of Artin — Schreier extensions of function fields attaining the Drinfeld — Vladut bound. Inventiones Mathematicae, 1995, vol.121, pp.211-222.
5. Cox D., Little J., and О'Shea D. Ideals, Varieties and Algorithms. Springer Verlag, 1992.
6. Stichtenoth H. Algebraic Function Fields and Codes. Springer Verlag, 1991.
7. Guruswami V. and Sudan M. Improved decoding of Reed — Solomon and algebraic geometry codes. IEEE Trans. Inform. Theory, 1999, vol.45, pp. 1757-1768.
8. Couvreur A., Márquez-Corbella I., and Pellikaan R. Cryptanalvsis of McEliece crvptosvstem based on algebraic geometry codes and their subcodes. IEEE Trans. Inform. Theory, 2017. vol.63, pp.5404-5418.
9. Pellikaan R. On decoding by error location and dependent sets of error positions. Discrete Math., 1992, vol. 106-107, pp. 113-121.
10. Márquez-Corbella I. and Pellikaan R. Error-correcting pairs: a new approach to code-based cryptography. 20th Conf. ACA 2014, Jul 2014, New York, USA. https ://hal. science/ hal-01088433/document.
11. Pellikaan R. On the existence of error-correcting pairs. Statistical Planning Inference, 1996, vol.51, pp. 229-242.
12. Couvreur A. and Panaccione I. Power Error Locating Pairs, https://arxiv.org/abs/1907. 11658v3.
13. Wesemeyer S. On the automorphism group of various Goppa codes. IEEE Trans. Inform. Theory, 1998, vol. 44, no. 2, pp. 630-643.