Алгоритм Адлемана

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм Адлемана — первый субэкспоненциальный алгоритм дискретного логарифмирования в кольце вычетов по модулю простого числа. Алгоритм был предложен Леонардом Максом Адлеманом (англ. Leonard Adleman — Эйдлмен) в 1979 году. Леонард Макс Адлеман (Шаблон:Lang-en — Эйдлмен; род. 31 декабря 1945) — американский учёный-теоретик в области компьютерных наук, профессор компьютерных наук и молекулярной биологии в Университете Южной Калифорнии. Он известен как соавтор системы шифрования RSA (Rivest — Shamir — Adleman, 1977 год) и ДНК-вычислений. RSA широко используется в приложениях компьютерной безопасности, включая протокол HTTPS.

Математический аппарат

Приведённая система вычетов по модулю Шаблон:Math — множество всех чисел полной системы вычетов по модулю Шаблон:Math, взаимно простых с Шаблон:Math. Приведённая система вычетов по модулю Шаблон:Math состоит из Шаблон:Math чисел, где Шаблон:Math — функция Эйлера. Любые [[Функция Эйлера|Шаблон:Math]] попарно несравнимых по модулю Шаблон:Math и взаимно простых с этим модулем чисел представляют собой приведённую систему вычетов. В качестве приведённой системы вычетов по модулю Шаблон:Math обычно берутся взаимно простые с Шаблон:Math числа от 1 до m1. Если (a,m)=1 и Шаблон:Math пробегает приведенную систему вычетов по модулю Шаблон:Math, то Шаблон:Math также принимает значения, образующие приведённую систему вычетов по этому модулю[1].

Приведённая система вычетов с умножением по модулю Шаблон:Math образует группу, называемую мультипликативной группой или группой обратимых элементов кольца вычетов по модулю Шаблон:Math, которая обозначается m× или U(m).

Факторизация многочлена — представление данного многочлена в виде произведения многочленов меньших степеней.

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

Противоположностью факторизации полиномов является их расширение, перемножение полиномиальных множителей для получения «расширенного» многочлена, записанного в виде суммы слагаемых.

Формулировка задачи

Пусть заданы полиномы α,β,fGF(pn),pn такие, что

f — неприводимый нормированный многочлен степени n,
α — генератор мультипликативной группы степени меньше n,
β≢0(modf).

Необходимо найти (если такое существует) натуральное число x, удовлетворяющее сравнению

αxβ(modf).

Описание алгоритма

1 этап. Положим

m=nlognlogp.

2 этап. Найдем множество T неприводимых нормированных многочленов fiGF(pn) степени не выше m и пронумеруем их числами от 1 до ω, где

ω=|T|.

3 этап. Положим z=1. Случайным образом выберем числа r и s такие, что

0r,s<pn1,

и вычислим полином γ такой, что

γαrβs(modf).

4 этап. Если полученный многочлен является произведением всех неприводимых полиномов fi из множества T, то есть

γ=γ~i=1ωfiei,

где γ~ — старший коэффициент γ (для факторизации унитарных многочленов над конечным полем можно воспользоваться, например, алгоритмом Берлекэмпа), то положим rz=r, sz=s,vz=e1,e2,,eω+1. В противном случае выберем другие случайные r и s и повторим этапы 3 и 4. После чего установим z=z+1 и повторим этапы 3 и 4. Повторяем до тех пор, пока zω+1. Таким образом мы получим множества ri, si и vi для 1iω+1.

5 этап. Вычислим a1,a2,,aω+1 такие, что НОД(a1,a2,,aω+1)=1 и

i=1ω+1aivi0,0,,0(modpn1).

6 этап. Вычислим число l такое, что

l=i=1ω+1siai.

7 этап. Если НОД(l,pn1)1, то перейдём к этапу 3 и подберем новые множества ri, si и vi для 1iω+1. В противном случае вычислим числа k,y и полином s такие, что

k=i=1ω+1riai,
sαkβl(modf),
αypn1p1s(modf).

8 этап. Вычислим искомое число x

xypn1p1kl(modpn1).

Другая версия алгоритма

Исходные данные

Пусть задано сравнение

Шаблон:EF

Необходимо найти натуральное число Шаблон:Math, удовлетворяющее сравнению (1).

Описание алгоритма

1 этап. Сформировать факторную базу, состоящую из всех простых чисел Шаблон:Math: Шаблон:EF

2 этап. С помощью перебора найти натуральные числа ri такие, что Шаблон:EF

то есть arimodp раскладывается по факторной базе. Отсюда следует, что

Шаблон:EF

3 этап. Набрав достаточно много соотношений (2), решить получившуюся систему линейных уравнений относительно неизвестных дискретных логарифмов элементов факторной базы (logaq).

4 этап. С помощью некоторого перебора найти одно значение Шаблон:Math, для которого Шаблон:EF

где p1,...,pkmodp — простые числа «средней» величины, то есть B<pi<B1, где B1 — также некоторая субэкспоненциальная граница, B1=econstlogploglogp.

5 этап. С помощью вычислений, аналогичных этапам 2 и 3 найти дискретные логарифмы logapi.

6 этап. Определить искомый дискретный логарифм: Шаблон:EF

Вычислительная сложность

Алгоритм Адлемана имеет эвристическую оценку сложности O(exp(c(logploglogp)1/2)) арифметических операций, где c — некоторая константа. На практике он недостаточно эффективен.

Приложения

Задача дискретного логарифмирования является одной из основных задач, на которых базируется криптография с открытым ключом.

Дискретное логарифмирование

Шаблон:Main Дискретное логарифмирование (DLOG) — задача обращения функции gx в некоторой конечной мультипликативной группе G.

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

Для заданных Шаблон:Math и Шаблон:Math решение x уравнения gx=a называется дискретным логарифмом элемента Шаблон:Math по основанию Шаблон:Math. В случае, когда Шаблон:Math является мультипликативной группой кольца вычетов по модулю Шаблон:Math, решение называют также индексом числа Шаблон:Math по основанию Шаблон:Math. Индекс числа Шаблон:Math по основанию Шаблон:Math гарантированно существует, если Шаблон:Math является первообразным корнем по модулю m.

Криптография с открытым ключом

Шаблон:Main Криптографическая система с открытым ключом (или асимметричное шифрование, асимметричный шифр) — система шифрования и/или электронной подписи (ЭП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу и используется для проверки ЭП и для шифрования сообщения. Для генерации ЭП и для расшифровки сообщения используется закрытый ключ[2]. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), в SSH. Также используется в PGP, S/MIME.Классическими криптографическими схемами на её основе являются схема выработки общего ключа Диффи-Хеллмана, схема электронной подписи Эль-Гамаля, криптосистема Мэсси-Омуры для передачи сообщений. Их криптостойкость основывается на предположительно высокой вычислительной сложности обращения показательной функции.

Протокол Диффи — Хеллмана

Шаблон:Main Протокол Ди́ффи — Хе́ллмана (Шаблон:Lang-en, DH) — криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования.

Схема открытого распределения ключей, предложенная Диффи и Хеллманом, произвела настоящую революцию в мире шифрования, так как снимала основную проблему классической криптографии — проблему распределения ключей.

В чистом виде алгоритм Диффи — Хеллмана уязвим для модификации данных в канале связи, в том числе для атаки «Человек посередине», поэтому схемы с его использованием применяют дополнительные методы односторонней или двусторонней аутентификации.

Схема Эль-Гамаля

Шаблон:Main Схема Эль-Гамаля (Elgamal) — криптосистема с открытым ключом, основанная на трудности вычисления дискретных логарифмов в конечном поле. Криптосистема включает в себя алгоритм шифрования и алгоритм цифровой подписи. Схема Эль-Гамаля лежит в основе бывших стандартов электронной цифровой подписи в США (DSA) и России (ГОСТ Р 34.10-94).

Схема была предложена Тахером Эль-Гамалем в 1985 году[3]. Эль-Гамаль разработал один из вариантов алгоритма Диффи — Хеллмана. Он усовершенствовал систему Диффи — Хеллмана и получил два алгоритма, которые использовались для шифрования и для обеспечения аутентификации. В отличие от RSA алгоритм Эль-Гамаля не был запатентован и поэтому стал более дешёвой альтернативой, так как не требовалась оплата взносов за лицензию. Считается, что алгоритм попадает под действие патента Диффи — Хеллмана.

Примечания

Шаблон:Примечания

Литература

  1. Бухштаб А. А. Теория чисел. — М.: Просвещение, 1966. — 385 с.
  2. Шнайер Б. Прикладная криптография. 2-е изд. Протоколы, алгоритмы и исходные тексты на языке Си. Глава 2.7 Цифровые подписи и шифрование.
  3. Шаблон:Статья