У математиціРешето поля функцій — один з найефективніших алгоритмів для розв'язання задачі дискретного логарифмування в скінченному полі. Він працює за еврістичний субекспоненційний час. Леонард Адлеман розробив його 1994 року[1], а згодов розробив його разом з М. Д. Хуангом 1999 року[2]. Попередня робота включає роботу Д. Копперсміта[3] про задачу дискретного логарифмування у полях характеристики два.
Задача дискретного логарифмування в скінченному полі полягає в розв'язуванні рівняння при , простого числа та . Функція при фіксованому є односторонньою функцією, яка застосовується в криптографії. Кілька криптографічних методів ґрунтуються на задачі дискретного логарифмування, як-от: Протокол Діффі-Геллмана, схема Ель-Гамаля та DSA (алгоритм цифрового підпису).
Нехай — многочлен, що визначений на алгебраїчній кривій над скічненним полем . Поле функцій можна розглядати як поле часток кільця афінних координат , де — ідеал, породжений . Це частинний випадок поля алгебраїчної функції. Він визначений над скінченним полем та має степінь трансцендентності один. Трансцендентний елемент позначають за .
Існує бієкція як між кільцями нормувань в полях функцій та класами еквівалентності місць, так і між кільцями нормувань та класами еквівалетності нормувань[4]. Ця відповідність часто використовується в алгоритмі решета поля функцій.
Дільники
Дискретне нормування поля функцій , а саме дискретне кільце нормувань , має єдиний максимальний ідеал , який називають простим ідеалом поля функцій. Степенем є , надалі позначимо .
Дільником називають -лінійну комбінацію всіх простих ідеалів, тобто , де та лише скінченне число ненулевих елементів суми. Дільник елемента визначається як , де — нормування, що відповідає простому ідеалу . Степенем дільника є .
Спосіб
Алгоритм решета поля функцій складається з попереднього обчислення, де знаходять дискретні логарифми незвідних многочленів малого степеня, і кроку зведення, на якому вони об'єднуються до логарифму .
Функції, які розкладаються на незвідні функції степенів, менші за деяку межу , називаються -гладкими. Це аналогічно визначенню гладкого числа. Такі функції корисні, оскільки їхнє розкладання можна знайти відносно швидко. Набір цих функцій незвідні, називається розкладеною основою.
Пара функцій називається подвійно гладкою, якщо — обидва гладкі, де — норма елемента над полем , — деякий параметр та розгладється як елемент поля функцій .
Крок просіювання алгоритму полягає у знаходженні подвійно гладких пар функцій. На наступному кроці ми використовуємо їх, щоб знайти лінійні співвідношення, включаючи логарифми функцій у розкладах. Розв'язуючи лінійну систему, ми обчислюємо логарифми. На кроці зведення ми виражаємо як комбінацію логарифмів, знайдених раніше. Таким чином розв'язуємо задачу дискретного логарифмування.
Попереднє обчислення
Вибір параметрів
Даний алгоритм вимагає таких параметрів: незвідна функція степені , функція та така крива заданого степеня , що . Тут — степінь в порядку основного поля . Позначимо за поле функцій, визначений на .
Це приводить до ізоморфізму та гомоморфізму
Використовуючи ізоморфізм, кожний елемент можна розглянути як многочлен в .
Також необхідно покласти межу гладкості для розкладеної основи .
Просіювання
На цьому кроці подвійно гладкі пари функцій знайдені.
Розглядаються функції вигляду , потім ділить на будь-яку стільки разів, скільки можливо. Кожна , яка зменшується до одиниці в даному процесі, є -гладкою. Щоб реалізувати це, можна використовувати код Грея для ефективного проходження кратних даного многочлена.
Це повністю аналогічно етапу просіювання в інших алгоритмах решета, таких як решето поля чисел або алгоритм обчислення порядку[en]. Замість чисел можна просіювати функції в , але ці функції можна розкласти на незвідні многочлени так само, як числа можна розкласти на прості множники.
Знаходження лінійних співвідношень
Це найскладніша частина алгоритму, яка включає поля функцій, місця та дільники, визначені вище. Мета полягає в тому, щоб використовувати подвійно гладкі пари функцій для знаходження лінійних співвідношень, що містять дискретні логарифми елементів у розкладеній основі.
Для кожної незвідної функції в розкладеній основі знаходимо місця поля , які які лежать над ними, та сурогатні функції , що відповідають цим місцям. Сурогатна функція , яка відповідає місцю , задовольняє рівність , де — це номер класу та — будь-яке фіксоване дискретне нормування з . Функція, визначена таким чином, єдина з точністю до константи в .
За означенням дільника for . Використовуючи це і те, що , отримуємо такий вираз:
,
де — будь-яке нормування with . Далі, використовуючи той факт, що дільник сурогатної функції єдині з точністю до константи, отримуємо
для деякого
Тепер ми використовуємо той факт, що , і відомий розклад цього виразу на незвідні многочлени. Нехай буде степенем у цьому розкладанні. Тоді
Тут ми можемо взяти дискретний логарифм рівняння з точністю до оборотного елементу. Це називається обмеженим дискретним логарифмом . Він визначається рівнянням для деякого оборотного .
,
де є оберненим до за модулем .
Вирази та логарифми невідомі. Коли знайдено достатньо рівнянь цієї форми, можна розв'язати лінійну систему для кожного . Узявши весь вираз за невідому, ми можемо виграти час, оскільки , , or не потрібно обчислювати. Зрештою, для кожного можна обчислити оборотний елемент, що відповідає обмеженому дискретному логарифму, який потім дає .
Крок зведення
Спочатку mod обчислюються для випадкового . При достатньо високій ймовірності це буде -гладкою, тому це можна розкласти як for з . Кожний з цих многочленів можна звести до многочлена меншого степеня за допомогою узагальненого метода Копперсміта[en][2]. Ми можемо зменшувати степінь, поки не отримаємо добуток -гладких многочленів. Потім, беручи логарифм за основою , ми можемо зрештою обчислити
використовуючи L-нотацію. Немає строгого доведення цієї складності, оскільки вона ґрунтується на деяких евристичних припущеннях. Наприклад, на етапі просіювання ми припускаємо, що числа у вигляді поводяться як випадкові числа в заданому діапазоні.
Порівняння з іншими способами
Існують два інших добре відомих алгоритми, які розв'язують задачу дискретного логарифмування за субекспоненційний час: алгоритм обчилення порядку[en] та решето поля чисел[5]. У своїх найпростіших формах обидва розв'язують задачу дискретного логарифмування в скінченних полях простого порядку, але їх можна розширити, щоб розв'язати задачу також у .
Решето поля чисел для задачі дискретного логарифмування у має складність [6] і тому трохи повільніше, ніж найкраща робота решета поля функцій. Однак це швидше за решето поля функцій при . Не дивно, що існує два схожі алгоритми, один з числовими полями, а інший з функціональними полями. Насправді між цими двома видами глобальних полів[en] існує широка аналогія.
Алгоритм обчилення порядку[en] набагато легше сформулювати, ніж решето поля функцій та решето поля чисел, оскільки він не включає жодних розширених алгебраїчних структур. Це асимптотично повільніше зі складністю . Основна причина, чому решето поля чисел та решето поля функцій швидші, полягає в тому, що ці алгоритми можуть працювати з меншою межею гладкості , тому більшість обчислень можна виконувати з меншими числами.
↑L. Adleman. «The function field sieve». In: Algorithmic Number Theory (ANTS-I). Lecture Notes in Computer Science. Springer (1994), pp.108-121.
↑ абL. Adleman, M.D. Huang. «Function Field Sieve Method for Discrete Logarithms over Finite Fields». In: Inf. Comput. 151 (May 1999), pp. 5-16. DOI: 10.1006/inco.1998.2761.
↑D. Coppersmith. (1984), «Fast evaluation of discrete logarithms in fields of characteristic two». In: IEEE Trans. Inform. Theory IT-39 (1984), pp. 587—594.
↑M. Fried and M. Jarden. In: «Field Arithmetic». vol. 11. (Jan. 2005). Chap. 2.1. DOI: 10.1007/b138352.
↑D. Gordon. «Discrete Logarithm in GF(P) Using the Number Field Sieve». In: Siam Journal on Discrete Mathematics — SIAMDM 6 (Feb. 1993), pp. 124—138. DOI: 10.1137/0406010.
↑R. Barbulescu, P. Gaudry, T. Kleinjung. «The Tower Number Field Sieve». In: Advances in Cryptology — Asiacrypt 2015. Vol. 9453. Springer, May 2015. pp. 31-58